Re: [程式] SAS 資料比對合併問題

看板Statistics作者 (..)時間13年前 (2011/08/14 16:28), 編輯推噓3(300)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《Maninck (我是大天才^o^/)》之銘言: : [軟體程式類別]: : SAS : [程式問題]: : 資料處理 : [軟體熟悉度]: : 新手(不到1個月) : [問題敘述]: : 資料A 資料B : I_CODE VALUE ID CODE KIND : AA123 U 01 AA123 B : AA123 C 02 BB123 C : BB123 D 03 CC123 F : CC123 U 04 DD123 N : CC123 F 05 EE123 A : FF123 D : 資料C : I_CODE VALUE ID : AA123 B 01 : AA123 C 02 : BB123 D 03 : CC123 F 04 : CC123 F 05 : 我想要做出資料C : 亦即,以資料A為主體, : 如果I_CODE在資料B的CODE有找,而且資料A的VALUE是U : 那麼就將資料B的KIND押到資料A的VALUE : 我試著用merge和update玩玩看,但試不出來 : 有什麼建議的語法或方向嗎? DATA A;INPUT I_CODE $ VALUE $ ID $; CARDS; AA123 U 01 AA123 C 02 BB123 D 03 CC123 U 04 CC123 F 05 ; DATA B;INPUT CODE $ KIND $; CARDS; AA123 B BB123 C CC123 F DD123 N EE123 A FF123 D ; RUN; PROC SQL; CREATE TABLE C AS SELECT A.I_CODE, CASE WHEN A.I_CODE=B.CODE & A.VALUE='U' THEN B.KIND ELSE A.VALUE END AS VALUE,A.ID FROM A LEFT JOIN B ON A.I_CODE=B.CODE; QUIT; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.168.220.103

08/14 18:55, , 1F
推,學到一招
08/14 18:55, 1F

08/14 19:03, , 2F
感謝~~不過這只能用SQL來解嗎?還有其他的方法嗎?
08/14 19:03, 2F
PROC SORT DATA=A;BY I_CODE; PROC SORT DATA=B;BY CODE; DATA C;MERGE A(IN=A) B(RENAME=(CODE=I_CODE));BY I_CODE;IF A; IF VALUE='U' THEN VALUE=KIND;KEEP I_CODE VALUE ID;RUN; ※ 編輯: imaltar 來自: 218.168.220.103 (08/14 20:21)

08/14 21:37, , 3F
哇~~好強啊!又多學了一個^O^/
08/14 21:37, 3F
文章代碼(AID): #1EHuSZX_ (Statistics)
文章代碼(AID): #1EHuSZX_ (Statistics)