作者lsshno1 ( )
看板Statistics
标题Re: [程式] SAS 如何合并相同日期的观察值
时间Fri Mar 8 23:44:02 2019
也可以尝试retain, 不过手边没有电脑可能语法有点小问题,不过概念是这样的
proc sort data=data1;
by ID DATE TREATMENT;
run;
data data2;
set data1;
by ID DATE;
length NEWTRT $200.;
retain NEWTRT;
if first.DATE then NEWTRT=strip(TREATMENT);
else NEWTRT=catx(‘+’, NEWTRT, TREATMENT);
if last.DATE;
run;
如果对first last 有疑问可以参考以下文章
https://blogs.sas.com/content/iml/2018/02/26/how-to-use-first-variable-and-las
t-variable-in-a-by-group-analysis-in-sas.html
※ 引述《x1234567 (莫急莫荒莫害怕)》之铭言:
: ※ 引述《hiarpu (up)》之铭言:
: : TITLE请注名软体类别 如[程式] stata
: : 发文前请把灰色的注解删除(可使用ctrl+y删除一整行)
: : [软体程式类别]:
: : SAS
: : [程式问题]:
: : 不知道如何合并观察值
: : [软体熟悉度]:
: : 请把以下不需要的部份删除
: : 新手
: : [问题叙述]:
: : 如一个病人在同一天接受到两种治疗
: : 如
: : ID DATE TREATMENT
: : 1 3/20 A
: : 1 3/20 B
: : 1 7/18 B
: : 2 2/15 A
: : 3 5/10 A
: : 4 9/16 A
: : 4 9/16 B
: : 我要如何把同一天不同的治疗合并在一起变成新的变数呢?
: : 希望合并後变成
: : ID DATE TREATMENT
: : 1 3/20 A+B
: : 1 7/18 B
: : 2 2/15 B
: : 3 5/10 A
: : 4 9/16 A+B
: : 谢谢 万分感谢
: *假设原资料集叫data1,拆成两个,再合并成data2;
: proc sort data=data1(where=(treatment='A')) out=data_A(rename=(treatment=tre
at
: ment1)); by id date;run;
: proc sort data=data1(where=(treatment='B')) out=data_B(rename=(treatment=tre
at
: ment2)); by id date;run;
: data data2;
: merge data_A data_B; by id date; run;
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.130.243.73
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1552059847.A.558.html