楼主: playmore
1999 7

[原创博文] 请问关于merge数据集的问题 [推广有奖]

学科带头人

2%

还不是VIP/贵宾

-

TA的文库  其他...

R相关

经济学相关

金融工程

威望
1
论坛币
16309 个
通用积分
7.1397
学术水平
372 点
热心指数
394 点
信用等级
341 点
经验
15297 点
帖子
1194
精华
1
在线时间
1331 小时
注册时间
2007-1-11
最后登录
2023-12-15

初级学术勋章 初级热心勋章 中级热心勋章

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我现在有一个主表,还有一个副表,目的是利用副表的信息更新主表
一般的做法是副表和主表的主码相同的,把副表的相应观测更新到主表即可,可以用如下的代码:

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

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

扫码加我 拉你入群

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

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

关键词:Merge 数据集 Input Lines Data 信息

沙发
可~乐 发表于 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;

使用道具

藤椅
jingju11 发表于 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;

使用道具

板凳
xiaobing212 发表于 2011-12-7 08:12:59 |只看作者 |坛友微信交流群
try this:
  1. data main;
  2. modify main sub;
  3. by a b;
  4. if _iorc_ ne 0 then do;
  5. output;
  6. _error_=0;
  7. end;
  8. run;
复制代码

使用道具

报纸
playmore 发表于 2011-12-7 10:38:35 |只看作者 |坛友微信交流群
xiaobing212 发表于 2011-12-7 08:12
try this:
多谢了,你的方法很好

刚才仔细看了
http://support.sas.com/documenta ... .htm#a000173361.htm
又学到了一招
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

使用道具

地板
solowander 发表于 2011-12-16 19:29:38 |只看作者 |坛友微信交流群
新手问,为啥直接merge不行?
data new;
merge sub main;
by a b;
run;

使用道具

7
playmore 发表于 2011-12-19 09:43:59 |只看作者 |坛友微信交流群
solowander 发表于 2011-12-16 19:29
新手问,为啥直接merge不行?
data new;
merge sub main;
仔细看我的需求,我要的是主码不同的进行更新,相同的保留原值不动
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

使用道具

8
apmzf 发表于 2011-12-19 13:04:15 |只看作者 |坛友微信交流群
没入门的问下,by a b 是按照两个条件筛选吗》?

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 05:03