请选择 进入手机版 | 继续访问电脑版
楼主: dxystata
4881 7

如何将变量的label作为第一行 [推广有奖]

版主

大师

34%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
181698 个
通用积分
15202.5562
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
289856 点
帖子
5346
精华
1
在线时间
13444 小时
注册时间
2006-6-21
最后登录
2024-3-28

初级学术勋章 初级热心勋章

dxystata 发表于 2014-1-26 11:26:26 |显示全部楼层 |坛友微信交流群
50论坛币
  1. data aaa;
  2. input x$ z$ y$;
  3. label y="sex";
  4. cards;
  5. a b m
  6. d e f
  7. ;
  8. run;
复制代码
如何将变量的label作为第一行,如果没有label则以变量名代替。希望得到的数据集为:
x z sex
a b m
d e f
保持变量的顺序不变。
谢谢!

最佳答案

pobel 查看完整内容

data bbb; if 0 then set aaa; array tmp $ _ALL_; if _N_=1 then do; do i=1 to dim(tmp); tmp(i)=vlabel(tmp(i)); end; output; end; set aaa; output; drop i; run;
关键词:label Abel Lab Input cards 如何

本帖被以下文库推荐

pobel 在职认证  发表于 2014-1-26 11:26:27 |显示全部楼层 |坛友微信交流群
data bbb;
   if 0 then set aaa;
   array tmp $ _ALL_;
   if _N_=1 then do;
     do i=1 to dim(tmp);
        tmp(i)=vlabel(tmp(i));
         end;
         output;
   end;
   set aaa;
   output;
   drop i;
run;
已有 1 人评分经验 学术水平 热心指数 收起 理由
dxystata + 100 + 3 + 3 分析的有道理

总评分: 经验 + 100  学术水平 + 3  热心指数 + 3   查看全部评分

和谐拯救危机

使用道具

pobel 发表于 2014-1-26 11:26
data bbb;
   if 0 then set aaa;
   array tmp $ _ALL_;
pebel 大师,想跟您请教一下”if 0 then set aaa"这个语句,因为默认值应该是1,所以if 0,这样就得到false,所以应该不会执行后面的set aaa语句,那这句的意义在哪里呢?还望赐教


使用道具

Tigflanker 发表于 2014-1-28 20:21:44 |显示全部楼层 |坛友微信交流群
tangliang0905 发表于 2014-1-28 10:06
pebel 大师,想跟您请教一下”if 0 then set aaa"这个语句,因为默认值应该是1,所以if 0,这样就得到fal ...
这个问题我也不曾理解,

其用途只知道是在data步之前用set的数据集所有变量属性进行铺垫。

我的个人理解是:if 0,说明后面的语句在数据执行阶段被否定不执行;而这句语句仅仅是在data步编译阶段进行了属性预读。

大概是这样。
Bye SAS.
若有缘,能重聚。

使用道具

dxystata 发表于 2015-1-16 13:00:46 |显示全部楼层 |坛友微信交流群
pobel 发表于 2014-1-26 11:26
data bbb;
   if 0 then set aaa;
   array tmp $ _ALL_;
  1. data aaa1;
  2. input x z$ y$;
  3. cards;
  4. 1 b m
  5. 2 e f
  6. ;
  7. run;

  8. proc format;
  9.     value xfmt 1="是" 2="否";
  10. run;

  11. data aaa;
  12. set aaa1;
  13. x1=compress(put(x,xfmt.));
  14. drop x;
  15. label x1="性别";
  16. run;
复制代码
针对这个数据集呢?问题就是如果变量label长度大于变量本身长度,如何更好的实现呢?

使用道具

pobel 在职认证  发表于 2015-1-16 13:42:23 |显示全部楼层 |坛友微信交流群
  1. data aaa;
  2. input x $ z $ y $ ;
  3. label y="sex-label is longer than variable-length";
  4. cards;
  5. a b m
  6. d e f
  7. ;
  8. run;

  9. proc sql noprint;
  10.    select distinct strip(name)||" $"||cats(max(length,length(label)))
  11.       into: length separated by " "
  12.           from dictionary.columns
  13.           where libname="WORK" and upcase(memname)="AAA"
  14.       order by varnum;
  15. quit;

  16. data bbb;
  17.    length &length;
  18.    if 0 then set aaa;
  19.    array tmp $ _ALL_;
  20.    if _N_=1 then do;
  21.      do i=1 to dim(tmp);
  22.         tmp(i)=vlabel(tmp(i));
  23.          end;
  24.          output;
  25.    end;
  26.    set aaa;
  27.    output;
  28.    drop i;
  29. run;
复制代码

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Eternal0601 + 4 + 4 + 4 精彩帖子

总评分: 学术水平 + 4  热心指数 + 4  信用等级 + 4   查看全部评分

使用道具

dxystata 发表于 2015-2-23 20:53:01 |显示全部楼层 |坛友微信交流群
pobel 发表于 2014-1-26 11:26
data bbb;
   if 0 then set aaa;
   array tmp $ _ALL_;
如果没有label,如果用空代替呢?谢谢!

使用道具

hajdaj 发表于 2015-2-25 05:36:48 |显示全部楼层 |坛友微信交流群
谢谢...

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-28 19:48