楼主: dxystata
4445 7

[原创博文] 如何将变量的标签作为数据的第一行? [推广有奖]

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
183395 个
通用积分
15333.1475
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
298627 点
帖子
5586
精华
1
在线时间
13632 小时
注册时间
2006-6-21
最后登录
2025-12-22

初级学术勋章 初级热心勋章 中级热心勋章 初级信用勋章

楼主
dxystata 发表于 2012-6-1 22:49:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
比如
a    b   c  变量名
1   abc 10
2   cde 11
3   cd   12
数据集为3行 其中a b c 的标签是id name value
想得到的数据集为
a b c  变量名
id name value
1   abc 10
2   cde 11
3   cd   12
数据集为4行

如果变量没有指定标签,用变量名代替。

谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:value alue name 数据集 ABC 标签 如何

本帖被以下文库推荐

沙发
lzu千寻 发表于 2012-6-2 07:34:13
这个不可能在实质上实现吧!sas数据集的每一列都其相应的值域,如果强行更改,id,value列将成为字符型变量!
生活的自由就是自由的生活!

藤椅
MerlinZHOU 发表于 2012-6-5 21:36:19
  1. data ads;
  2. input a $ b $ c $;
  3. label a='id'
  4. /*      b='name'*/
  5.       c='value';
  6. cards;
  7. 1 abc 10
  8. 2 cde 11
  9. 3 cd 12
  10. ;

  11. proc contents data=ads out=bds noprint;
  12. run;

  13. data cds;
  14. set bds;
  15. if missing(label)then label=name;
  16. keep label;
  17. run;

  18. proc transpose data=cds out=dds (rename=(col1=a col2=b col3=c) keep=col1 col2 col3);
  19. var label;
  20. run;

  21. data eds;
  22. set dds ads;
  23. run;
复制代码
已有 1 人评分经验 热心指数 收起 理由
dxystata + 20 + 1 好的意见建议

总评分: 经验 + 20  热心指数 + 1   查看全部评分

板凳
snoozer 发表于 2012-6-5 22:13:05
lzu千寻 发表于 2012-6-2 07:34
这个不可能在实质上实现吧!sas数据集的每一列都其相应的值域,如果强行更改,id,value列将成为字符型变量 ...
同意

报纸
tj0412ymy 发表于 2012-6-5 22:48:42
  1. data ads;
  2. input a $ b $ c $;
  3. label a='id' b='name' c='value';
  4. cards;
  5. 1 abc 10
  6. 2 cde 11
  7. 3 cd 12
  8. ;
  9. data want;
  10. set ads end=eof;
  11. output;
  12. array def{*} _character_;  
  13. if eof then do i=1 to dim(def);
  14. call label(def(i),def(i));
  15. end;
  16. if i=4 then output;
  17. run;
  18. proc sort data=want out=final(drop=i); by descending i;run;
  19. proc print noobs;run;
复制代码
已有 1 人评分经验 热心指数 收起 理由
dxystata + 20 + 1 好的意见建议

总评分: 经验 + 20  热心指数 + 1   查看全部评分

对SAS和统计方面感兴趣的朋友,请加SAS学习和认证讨论群:169157207。欢迎在群上讨论!

地板
dxystata 发表于 2012-6-7 15:24:02
MerlinZHOU 发表于 2012-6-5 21:36
data ads;
input a $ b $ c $;
label a='id'
/*      b='name'*/
      c='value';
cards;
1 abc 10
2 cde 11
3 cd 12
;

proc contents data=ads out=bds noprint;
run;

data cds;
set bds;
if missing(label)then label=name;
keep label;
run;

proc transpose data=cds out=dds (rename=(col1=a col2=b col3=c) keep=col1 col2 col3);
var label;
run;

data eds;
set dds ads;
run;


如果数据集中有数值型变量,如何使顺序不变,实现将变量的标签作为数据的第一行要求?谢谢!

7
tj0412ymy 发表于 2012-6-7 18:11:05
dxystata 发表于 2012-6-7 15:24
data ads;
input a $ b $ c $;
label a='id'
最省事的做法是先将数值型转换为字符型,然后再进行操作。因为不论通过什么方法做,最终生成的数据集中肯定全都是字符型变量!
对SAS和统计方面感兴趣的朋友,请加SAS学习和认证讨论群:169157207。欢迎在群上讨论!

8
hs4601 发表于 2013-12-15 17:14:49

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 06:30