楼主: annyding345
1268 2

[问答] 横向合并中,需要按照数据集1的变量把数据集2中的变量补充进来 [推广有奖]

  • 3关注
  • 0粉丝

已卖:2份资源

讲师

10%

还不是VIP/贵宾

-

威望
0
论坛币
6458 个
通用积分
4.0000
学术水平
0 点
热心指数
5 点
信用等级
0 点
经验
34069 点
帖子
277
精华
0
在线时间
433 小时
注册时间
2008-3-4
最后登录
2025-11-3

楼主
annyding345 发表于 2013-6-26 14:25:29 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
又碰到问题了,求助!
我想把两个数据集横向合并。数据集38中有52条记录,变量除了“stkcd”“year”以外,还有几个变量。数据集40中有91433条记录,变量“stkcd”“year”以外,还有30几个变量。
    要求:按照数据集38中的52条记录,把数据集40中的变量增加进来,要求新数据集中也是52条记录,只不过变量增加了。
   我现在试了这个程序,
proc sort data=data38;
by stkcd year;
run;

proc sort data=data40;
by stkcd year;
run;

data data41;
merge data38 data40;
by stkcd year;
run;
发现新数据集41中,有91434条记录,没有得到我想要的结果,困惑中~~
二维码

扫码加我 拉你入群

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

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

关键词:数据集 stkcd Merge Data year 程序 记录

沙发
moyunzheng 发表于 2013-6-26 15:46:03
  1. /*merge by 实现的是full join的方法,可以用in= data option,也可以用更简单的left join*/
  2. data data38;
  3. stkcd=1;year=1;x1=1;
  4. run;

  5. data data40;
  6. stkcd=1;year=1;y1=1;output;
  7. stkcd=2;year=2;y1=2;output;
  8. run;


  9. proc sql noprint;
  10. create table data41_1
  11.         as select *
  12.         from data38 as a
  13.         left join data40 as b
  14.         on a.stkcd=b.stkcd and a.year=b.year;
  15. quit;

  16. proc sort data=data38;
  17. by stkcd year;
  18. run;
  19. proc sort data=data40;
  20. by stkcd year;
  21. run;
  22. data data41_2;
  23. merge data38(in=a) data40;
  24. by stkcd year;
  25. if a;
  26. run;
复制代码

藤椅
annyding345 发表于 2013-6-26 17:09:49
谢谢!我用了一个方法:在data38中增加一个哑变量,ybl=1,横向合并后,去掉数据集中ybl=缺失值的记录。
data data38;
set data38;
ybl=1;
run;

proc sort data=data38;
by stkcd year;
run;

proc sort data=data40;
by stkcd year;
run;

data data41;
merge data38 data40;
by stkcd year;
if ybl=. then delete;
run;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 07:11