楼主: jjltcfa
4040 10

[问答] 一对多数据合并 更新问题 [推广有奖]

  • 6关注
  • 1粉丝

本科生

16%

还不是VIP/贵宾

-

TA的文库  其他...

sAs of K

威望
0
论坛币
664 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
809 点
帖子
70
精华
0
在线时间
73 小时
注册时间
2011-12-1
最后登录
2017-9-27

楼主
jjltcfa 发表于 2013-7-22 20:11:58 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
想更新的数据如下,用数据集B信息更新数据集A,当数据集B set_acc  等于 数据集A set_acc时, 则在数据集a后每个相同的set_acc后均填入数据集B set_acc后对应的y值。
data a;
input set_acc x;
datalines;
12  8
12  9
12  1
12  0
11 9
11 90
11 3
;
run;

data b;
input set_acc y;
datalines;
12 3
11 1
;
run;

数据集a与B更新后的理想结果为
变量 set_acc  x y
12  8  3
12  9  3
12  1  3
12  0   3
11 9    1
11 90   1
11 3    1

谢谢大家帮助。 先谢过。


二维码

扫码加我 拉你入群

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

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

关键词:数据合并 新问题 一对多 Input Lines SAS

沙发
jjltcfa 发表于 2013-7-22 20:12:43
在线等, 大家辛苦了。

藤椅
jjltcfa 发表于 2013-7-22 21:16:27
想清楚了 问题已解决。还是谢谢点击浏览过的朋友 lol

板凳
boe 发表于 2013-7-22 21:16:51
  1. data ab;
  2.     if 0 then set a;
  3.     if _N_ = 1 then do;
  4.         declare hash h(dataset: 'b');
  5.         h.definekey('set_acc');
  6.         h.definedata('y');
  7.         h.definedone();
  8.         call missing(y);
  9.     end;
  10.     set a;
  11.     if h.find() = 0;
  12. run;
复制代码

已有 3 人评分学术水平 热心指数 信用等级 收起 理由
Tigflanker + 1 + 1 + 1 另一个世界。。
yongyitian + 1 + 1 + 1 精彩
jjltcfa + 1 + 1 + 1 观点有启发

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

Gorgeous girl , I love !

报纸
jjltcfa 发表于 2013-7-22 21:28:11
boe 发表于 2013-7-22 21:16
谢谢帮忙!论坛的氛围真的很好,每次求助基本都可以得到大家的各种热心帮助,真的为我这样的初学者解决了很多问题。你的思路很好,我努力学习一下,我最后是用proc sql 做的,贴在你的下面,虽然有点相形见拙,但是只要能给其他有相同问题的人一点解决思路,我的目的就算达到了。 再次感谢。希望以后有问题时还能接受你的指导 lol

地板
jjltcfa 发表于 2013-7-22 21:29:56
proc sql;
create table c as
select a.*,b.y
from b left join a on b.set_acc=a.set_acc;
quit;

7
boe 发表于 2013-7-22 21:37:30
jjltcfa 发表于 2013-7-22 21:29
proc sql;
create table c as
select a.*,b.y
学习了,很简练
Gorgeous girl , I love !

8
071029 发表于 2013-7-24 17:52:01
  1. data a;
  2. input set_acc x;
  3. datalines;
  4. 12  8
  5. 12  9
  6. 12  1
  7. 12  0
  8. 11 9
  9. 11 90
  10. 11 3
  11. ;
  12. run;

  13. data b;
  14. input set_acc y;
  15. datalines;
  16. 12 3
  17. 11 1
  18. ;
  19. run;

  20. proc sort data=a;
  21. by set_acc
  22. ;
  23. run;
  24. proc sort data=b;
  25. by set_acc
  26. ;
  27. run;

  28. data ab;
  29. merge a b;
  30. by set_acc;
  31. run;
复制代码

9
zhengjian614 发表于 2013-7-25 15:37:07
boe 发表于 2013-7-22 21:16
HASH感觉用的比较少吧?请问对比SQL和MERGE的方法有什么优势吗?做项目的时候都没有碰到用HASH的

10
boe 发表于 2013-7-25 16:32:51
zhengjian614 发表于 2013-7-25 15:37
HASH感觉用的比较少吧?请问对比SQL和MERGE的方法有什么优势吗?做项目的时候都没有碰到用HASH的
嗯,看个人习惯和喜好吧,hash table放在内存里面,内存足够效率会高些。
道听途说,大牛多拍
Gorgeous girl , I love !

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

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