楼主: shenyp12
3520 2

[问答] SAS如何对于数据进行条件赋值 [推广有奖]

  • 0关注
  • 0粉丝

初中生

38%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
63 点
帖子
4
精华
0
在线时间
19 小时
注册时间
2018-3-5
最后登录
2018-5-29

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
假设对于a数据库,其包含的数据为:
data a;
input x y z;
cards;
1 2008-6 11
1 2009-6 821 2010-6 133
1 2011-6 312
……
2 2008-6 76
2 2009-6 68
2 2010-6 966
2 2011-6 628
……
run;
对于b数据库,其包含的数据为:
data b;
input x y;
cards;
1 2008-6
1 2008-7
1 2008-8
……
2 2008-6
2 2008-7
2 2008-8
……
run;
然后我想实现的功能就是,将a数据库中z列的值赋予到b数据库中。可以看得,对于数据库b中,时间是连续的月份,而对于a中,时间是每年的6月。我想在b中建立一列新的变量c,并且把其中 2008-07直到2009-06的值,都赋值为a数据库的2008-06,依次类推,2009-07直到2010-06的值,也全部为a中2009-06的值。同时需要匹配序号x(这个是有很多个的。。示例中只取了1,2)。请问有什么比较方便的算法可以实现吗?不胜感激!




二维码

扫码加我 拉你入群

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

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

关键词:cards Input Data card 不胜感激

回帖推荐

沙发
l1i2n3i4n5g 在职认证  发表于 2018-3-19 16:15:25 |只看作者 |坛友微信交流群
  1. data a;
  2. input x y $ z;
  3. cards;
  4. 1 2008-6 11
  5. 1 2009-6 821
  6. 1 2011-6 312
  7. 2 2008-6 76
  8. 2 2009-6 68
  9. 2 2010-6 966
  10. 2 2011-6 628
  11. run;

  12. data b;
  13. input x y $;
  14. cards;
  15. 1 2008-6
  16. 1 2008-7
  17. 1 2008-8
  18. 2 2008-6
  19. 2 2008-7
  20. 2 2008-8
  21. run;

  22. data a1;
  23.    set a;
  24.    do i=7 to 12;
  25.       y1=cats(scan(y,1,'-'),'-',i);
  26.       output;
  27.    end;
  28.    do i=1 to 6;
  29.       y1=cats(input(scan(y,1,'-'),best12.)+1,'-',i);
  30.       output;
  31.    end;
  32.    drop i;
  33. run;

  34. proc sql;
  35.    create table c as
  36.    select b.*, a1.z from b left join a1
  37.    on b.y=a1.y1 and b.x=a1.x;
  38. run;
  39. quit;
复制代码

使用道具

藤椅
shenyp12 发表于 2018-3-19 20:24:26 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2018-3-19 16:15
太感谢了,代码运行很棒,长知识了!

使用道具

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

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

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

GMT+8, 2024-4-20 20:22