楼主: wxmouse
1795 3

请教,merge用来修改主数据集是不是只能修改第一条观测(如果同一by变量有多条关测) [推广有奖]

  • 0关注
  • 1粉丝

本科生

93%

还不是VIP/贵宾

-

威望
0
论坛币
416 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1011 点
帖子
54
精华
0
在线时间
130 小时
注册时间
2011-7-20
最后登录
2021-12-7

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
RT,我想用更新数据集来更新主数据集,但是主数据集同一变量有多个观测,为什么结果只更新了第一条,难道和update一样只能更新一条?
例如:主数据集:
name    age
张三     12
张三      19
张三     20
李四      15

更新数据集:
name   age
张三     30


我想要的结果:
name   age
张三     30
张三    30
张三    30
李四    15

但是merge 主数据集   更新数据集  后  结果为;
name   age
张三    30
张三    19
张三    20
李四    15

分析了一下PDV过程,主数据集中张三的地第二条观测进去后又把age从30变回到19了,这该如何处理?谢谢
二维码

扫码加我 拉你入群

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

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

关键词:Merge 数据集 update name date update 如何

沙发
freerunning_sky 在职认证  发表于 2014-9-24 17:23:00 |只看作者 |坛友微信交流群
没有by name吧。。

使用道具

群里的大神给出了两个思路
一个是 case when 用于sql
一个是 if then 用于data步
前者根据思路我写的代码:
proc sql;
       select b.name,
                           case
                                when n.age is not missing then n.age
                                else b.age
                        end as age
       from d1 as b
       full join
       d2 as n
       on b.name=n.name;
   quit;
后者是群里大神提供思路时一起提供的:
data a;
    merge d1 d2(rename=(age=new_age));
    by name;
    if new_age ne . then age=new_age;
    drop new_age;
run;

使用道具

板凳
wxmouse 发表于 2014-9-24 22:12:04 来自手机 |只看作者 |坛友微信交流群
天外飞猴斯基 发表于 2014-9-24 19:07
群里的大神给出了两个思路
一个是 case when 用于sql
一个是 if then 用于data步
嗯,非常感谢,我也想到了第二个赋值的方法,看来没错了,谢谢。

使用道具

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

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

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

GMT+8, 2024-4-26 09:27