作者imaltar (..)
站内Statistics
标题Re: [程式] SAS 资料比对合并问题
时间Sun Aug 14 16:28:16 2011
※ 引述《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
1F:推 west1996:推,学到一招 08/14 18:55
2F:推 Maninck:感谢~~不过这只能用SQL来解吗?还有其他的方法吗? 08/14 19:03
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)
3F:推 Maninck:哇~~好强啊!又多学了一个^O^/ 08/14 21:37