作者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/m.aspx?n=bbs/Statistics/M.1552059847.A.558.html