[程式] SAS 用merge 做 match

看板Statistics作者 (HSciverce)時間10年前 (2015/06/02 21:30), 編輯推噓2(207)
留言9則, 4人參與, 最新討論串1/2 (看更多)
[軟體程式類別]: 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

06/02 22:04, , 2F
其實用GOOGLE 應該可以找到一些可用的語法
06/02 22:04, 2F

06/02 22:05, , 3F
先排序兩筆資料,給個ID再串?
06/02 22:05, 3F

06/03 00:42, , 4F
同年齡要怎樣處理 老師有說嗎
06/03 00:42, 4F

06/03 00:47, , 5F
if else可以用?
06/03 00:47, 5F

06/03 11:31, , 6F
if eles 可以 因為年齡取到小數點後 真的一樣取其
06/03 11:31, 6F

06/03 11:31, , 7F
中一筆 現在在看一樓大給的裡面有沒有可以用的語法
06/03 11:31, 7F

06/03 16:18, , 8F
可以看一下我的語法
06/03 16:18, 8F

06/03 16:19, , 9F
merge多對多不好用 我也想知道多對多怎樣寫
06/03 16:19, 9F
文章代碼(AID): #1LRQ_aHb (Statistics)
文章代碼(AID): #1LRQ_aHb (Statistics)