楼主: the_fly_winds
3536 3

[程序分享] SAS如何这样转置并复制数据? [推广有奖]

  • 0关注
  • 1粉丝

博士生

5%

还不是VIP/贵宾

-

威望
0
论坛币
1187 个
通用积分
6.3200
学术水平
16 点
热心指数
24 点
信用等级
14 点
经验
2330 点
帖子
105
精华
0
在线时间
257 小时
注册时间
2014-9-28
最后登录
2024-4-11

50论坛币
有这样的一个原始的csv文件:
id,2001,2002
a,1,2
b,3,4

各位请复制到csv中自行创建一下下,数据简单就不要附件了.

请一定要按照上面的数据创建数据,因为另一个问题是,我想知道

当变量名为数字时要如何读入呢?

想要的结果:
id time value
a 2001 1
a 2002 2
b 2001 3
b 2002 4

请展示从文件读入到数据处理的全过程!

再次,请按照本文所示的数据创建源数据,不能有任何其他更改.

沙发
popodan 在职认证  发表于 2018-9-17 05:49:38 |只看作者 |坛友微信交流群
data a;
input id $ Y2001 Y2002; /*SAS 变量名不能数字开头, 就加了字母Y在前面*/
cards;
a 1 2
b 3 4
;
run;

proc transpose data=a out=b(rename=(col1=value)) name=time;
by id;
run;

结果就是你要的。

使用道具

藤椅
mengfanshun 发表于 2019-4-10 16:47:46 |只看作者 |坛友微信交流群
若变量名为数字时,不符合原始的SAS命名规则,但非要求变量名是数字,可以使用全局语句:option validvarname=any;

使用道具

板凳
mengfanshun 发表于 2019-4-10 17:08:54 |只看作者 |坛友微信交流群

/*查看变量名*/
proc contents data=b;
run;
/*修改变量名*/
proc datasets library=work;
modify b;
rename col1=value _name_=time;
run;

使用道具

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

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

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

GMT+8, 2024-4-23 14:06