作者ya1357977889 (HSciverce)
看板Statistics
標題[程式] SAS 用merge 做 match
時間Tue Jun 2 21:30:07 2015
[軟體程式類別]:
SAS (9.3)
[程式問題]:
用merge 做配對(年齡)
[軟體熟悉度]:
低(1~3個月)
[問題敘述]
恩~~基本上就是做match 知道可以用macro 或sql來做,
但是強者老師覺得我們程度還不高,要求我們用merge來做
且SQL MACRO目前真的還有點摸不懂
例子像這樣
在1999/1/1 有A病的人有5筆
start_date age477
1991/1/1 43
1991/1/1 32
1991/1/1 44
1991/1/1 27
1991/1/1 50
在1991/1/1 沒A病的人有10筆
start_date agen477
1991/1/1 42
1991/1/1 45
1991/1/1 39
1991/1/1 49
1991/1/1 40
1991/1/1 34
1991/1/1 46
1991/1/1 27
1991/1/1 54
1991/1/1 33
要做出有A病的人 對到一個沒病的人 且年齡差最小
像這樣
start_date age477 agen477
1991/1/1 43 42
1991/1/1 32 33
1991/1/1 44 45
1991/1/1 27 27
1991/1/1 50 49
[程式範例]:
libname c "G:\sas\icd";
libname a "G:\sas\icd";
proc sort data=c.all477; by start_date;
proc sort data=c.no477; by start_date;
run;
data a.ok477;
merge c.all477 c.no477;
by start_date;
run;
這個跑出來長這樣
start_date age477 agen477
1991/1/1 43 42
1991/1/1 32 45
1991/1/1 44 39
1991/1/1 27 49
1991/1/1 50 40
1991/1/1 50 34
1991/1/1 50 46
1991/1/1 50 27
1991/1/1 50 54
1991/1/1 50 33
有版友可以指導一下 怎麼產生理想的資料呢O__Oa
-----------------------------------------------------------------------------
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.135.246.73
※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1433251812.A.465.html
→ imaltar: 其實用GOOGLE 應該可以找到一些可用的語法 06/02 22:04
推 Jarlan: 先排序兩筆資料,給個ID再串? 06/02 22:05
→ MOONY135: 同年齡要怎樣處理 老師有說嗎 06/03 00:42
→ MOONY135: if else可以用? 06/03 00:47
→ ya1357977889: if eles 可以 因為年齡取到小數點後 真的一樣取其 06/03 11:31
→ ya1357977889: 中一筆 現在在看一樓大給的裡面有沒有可以用的語法 06/03 11:31
→ MOONY135: 可以看一下我的語法 06/03 16:18
→ MOONY135: merge多對多不好用 我也想知道多對多怎樣寫 06/03 16:19