楼主: wxmouse
2081 3

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

  • 0关注
  • 1粉丝

本科生

93%

还不是VIP/贵宾

-

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

楼主
wxmouse 发表于 2014-9-24 14:36:06 |AI写论文

+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吧。。

藤椅
天外飞猴斯基 发表于 2014-9-24 19:07:03
群里的大神给出了两个思路
一个是 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
拉您进交流群
GMT+8, 2025-12-30 13:03