全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3573 5
2016-12-16
原始数据集是这样的
Subject

visit

time

flg

flgcd

01-S001

Visit 3

12AUG2016

No 否

2

01-S001

Visit  4

09SEP2016

No  否

2

01-S001

Visit  5

04NOV2016

No  否

2

01-S002

Visit  3

12AUG2016

No  否

2

01-S002

Visit  4

09SEP2016

No  否

2

01-S002

Visit  5

04NOV2016

No  否

2

01-S003

Visit  3

12AUG2016

No  否

2

01-S003

Visit  4

09SEP2016

No  否

2

01-S003

Visit  5

04NOV2016

No  否

2

01-S004

Visit  3

26AUG2016

No  否

2

01-S004

Visit  4

23SEP2016

No  否

2

01-S004

Visit  5

11NOV2016

No  否

2

01-S005

Visit  3

19AUG2016

No  否

2

01-S005

Visit  4

23SEP2016

No  否

2

01-S005

Visit  5

11NOV2016

No  否

2

01-S006

Visit  3

19AUG2016

No  否

2

01-S006

Visit  4

23SEP2016

No  否

2

01-S006

Visit  5

11NOV2016

No  否

2

01-S007

Visit  3

02SEP2016

No  否

2

01-S007

Visit  4

30SEP2016

No  否

2

01-S007

Visit  5

25NOV2016

No  否

2

02-S002

Visit  2

01NOV2016

No  否

2

02-S004

Visit  2

14NOV2016

No  否

2


我希望出成一个subject一条记录,大概想要的结果类似

Subject

visit2

visit3

visit4

visit5

01-S001

12AUG2016

No  否

2

09SEP2016

No  否

2

04NOV2016

No  否

2

01-S002

12AUG2016

No  否

2

09SEP2016

No  否

2

04NOV2016

No  否

2

01-S003

12AUG2016

No  否

2

09SEP2016

No  否

2

04NOV2016

No  否

2

01-S004

26AUG2016

No  否

2

23SEP2016

No  否

2

11NOV2016

No  否

2

01-S005

19AUG2016

No  否

2

23SEP2016

No  否

2

11NOV2016

No  否

2

01-S006

19AUG2016

No  否

2

23SEP2016

No  否

2

11NOV2016

No  否

2

01-S007

02SEP20160

No  否

2

30SEP2016

No  否

2

25NOV2016

No  否

2

02-S00201NOV2016No  否

2

02-S004

14NOV2016No  否

2



我知道sas是没办法合并单元格的,这是我在excel里做的,就是按照subject,把每一行都放到第一行上去!
二维码

扫码加我 拉你入群

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

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

全部回复
2016-12-16 15:29:57
%macro jj(out);
data a&out.;
set a(where=(visit="Visit &out."));
rename visit=visit&out. time=time&out. flg=flg&out. flgcd=flgcd&out.;
proc sort;by Subject;
run;
%mend jj;
%jj(1);
%jj(2);
%jj(3);
%jj(4);
%jj(5);

data final;
merge a1 a2 a3 a4 a5;
by Subject;
run;
二维码

扫码加我 拉你入群

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

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

2016-12-16 15:38:04
先分别按subject进行转置,再merge起来,注意rename visit的变量名
二维码

扫码加我 拉你入群

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

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

2016-12-16 16:43:38
我的方法比较笨, 但可以实现, 你试一下:



data a;
input subjectid $ visit $ time $9. flag;
cards;
subject1 cust1 12AUG2016 2
subject1 cust2 12AUG2016 0
;
run;

data b (drop=time flag);
set a;
u=cat(time," ",flag);
run;

proc transpose data=b;
by subjectid;
id visit;
var u;
run;


二维码

扫码加我 拉你入群

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

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

2016-12-19 11:04:40
zhanjie.wang 发表于 2016-12-16 16:43
我的方法比较笨, 但可以实现, 你试一下:
你的方式就是把多个变量合并成一个变量,然后转置!对不?
二维码

扫码加我 拉你入群

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

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

2016-12-20 10:52:29
fyp198744 发表于 2016-12-19 11:04
你的方式就是把多个变量合并成一个变量,然后转置!对不?
对的。
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群