全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2311 7
2011-12-06
我现在有一个主表,还有一个副表,目的是利用副表的信息更新主表
一般的做法是副表和主表的主码相同的,把副表的相应观测更新到主表即可,可以用如下的代码:

data main;
set main sub;
by a b;
run;

但是我现在的要求是只把主码和主表不同的副表观测值进行更新,举个例子:

data main;
input a $ b $ c;
datalines;
aa bb 2
cc dd 3
ee ff 5
;
run;

data sub;
input a $ b $ c;
datalines;
aa bb 12
cc dd 23
gg hh 34
;
run;

最后想要得到的表格只含有如下这四行
aa bb 2
cc dd 3
ee ff 5
gg hh 34

请问该怎么办,谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-12-6 22:42:23
data main;
input a $ b $ c;
datalines;
aa bb 2
cc dd 3
ee ff 5
;
run;

data sub;
input a $ b $ c;
datalines;
aa bb 12
cc dd 23
gg hh 34
;
run;

data test;
        set main(in=ina) sub(in=inb);
        by a b;
        in_one=ina;
        in_two=inb;
        if in_one^=0 then z=in_one;
        if a^=lag(a) and in_one=0 then         z=in_two;
        if z=1 then output;
        drop in_one  in_two z;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-12-7 04:12:07
The above code fails when sub contains replicated a & b but unique to main table.
In fact, the first method came to my mind was to use proc sql. Unfortunately, I did not find a short-cut yet. Anybody give a try?
jingju

data test1;
merge sub main;
by a b;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-12-7 08:12:59
try this:
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-12-7 10:38:35
xiaobing212 发表于 2011-12-7 08:12
try this:
多谢了,你的方法很好

刚才仔细看了
http://support.sas.com/documenta ... .htm#a000173361.htm
又学到了一招
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-12-16 19:29:38
新手问,为啥直接merge不行?
data new;
merge sub main;
by a b;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群