楼主: dxystata
2075 3

根据数据集bbb中y值更新aaa中y值 [推广有奖]

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
183395 个
通用积分
15333.1475
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
298627 点
帖子
5586
精华
1
在线时间
13632 小时
注册时间
2006-6-21
最后登录
2025-12-22

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

楼主
dxystata 发表于 2016-11-9 19:38:35 |AI写论文
20论坛币
  1. data aaa;
  2. input x$ y z;
  3. cards;
  4. a 1 1
  5. b 2 2
  6. c 3 3
  7. a 11 1
  8. b 12 2
  9. c 13 3
  10. a 21 1
  11. b 22 2
  12. c 23 3
  13. ;
  14. run;

  15. data bbb;
  16. input x$ y;
  17. cards;
  18. a 1
  19. b 2
  20. c 3
  21. ;
  22. run;
复制代码
希望得到的结果为数据集aaa为
a 1 1
b 2 2
c 3 3
a 1 1
b 1 2
c 1 3
a 1 1
b 2 2
c 3 3


关键词:数据集 Input cards card Data

沙发
wwang111 发表于 2016-11-9 20:26:27
数据集bbb中,x=b时,y=2;x=c时,y=3;
为什么你想要的结果里面第5,6行,y的值都是1?

藤椅
Kitty喵喵喵 发表于 2016-11-23 10:55:45
proc sql noprint;
        create table ccc as
        select a.x,a.z,b.y from aaa as a left join bbb as b
        on a.x = b.x;
quit;
这样就达到了替换y值的效果,但是如果想要做出最终结果还需要做一下排序处理噢

板凳
prince315 在职认证  发表于 2016-11-23 13:42:35
一般需要考虑如果更新数据中不包括所有key值:
proc sql noprint;
        create table ccc as
        select a.x,a.z, coalesce(b.y,a.y) as y from aaa as a left join bbb as b
        on a.x = b.x;
quit;
或者:
proc sql;
update aaa
set y = (select y from bbb where aaa.x = bbb.x)
where x in (select x from bbb)
;quit;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 01:49