全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6280 24
2012-02-21
  数据集:
data test;
format no 1.0;
format dt yymmdd10.;
input no dt :yymmdd10. ret @@;
cards;
    1 2001-01-01 0.02
    1 2001-03-01 0.03
    1 2001-04-01 0.02
    221 2001-01-01 0.02
    221 2001-02-01 0.03
    221 2001-04-01 0.02
    333333 2001-02-01 0.02
    333333 2001-03-01 0.03
    333333 2001-04-01 0.02
    ;
run;

希望得到一下结果
    1 2001-01-01 0.02
    1 2001-02-01 0
    1 2001-03-01 0.02
    1 2001-04-01 0.02
    221 2001-01-01 0.02
    221 2001-02-01 0.03
    221 2001-03-01 0
    221 2001-04-01 0.03
    33333 2001-01-01 0
    33333 2001-02-01 0.02
    33333 2001-03-01 0.03
    33333 2001-04-01 0.02

即补齐日期缺省值,并对no、ret等进行填充,其中ret为0.
不知道有没有好的方法?在线等


补充思路:可否按照cd的顺序进行检查,看‘2001-01-01’至‘2001-04-01’中缺了哪个,然后补全。不知道怎么编程?
二维码

扫码加我 拉你入群

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

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

全部回复
2012-2-21 15:45:37
二维码

扫码加我 拉你入群

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

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

2012-2-21 15:52:04
Let me try a hardcode~~
复制代码
二维码

扫码加我 拉你入群

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

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

2012-2-21 19:51:32
zhangzachary 发表于 2012-2-21 15:52
Let me try a hardcode~~
谢谢,这是解决这个问题的一个方法。可是,当stkcd的号码很多时候,特别还是不连续的时候,比如000001、600098等,不可能用do 产生,且日期持续也较长,需要用循环语句产生2001-01-01,2001-02-01等。于是变得复杂了。anyway,
二维码

扫码加我 拉你入群

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

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

2012-2-21 20:03:09
zhangzachary 发表于 2012-2-21 15:52
Let me try a hardcode~~
问题变复杂了,请见题中修改
二维码

扫码加我 拉你入群

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

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

2012-2-21 20:04:05
你如果是想要一个连续产生的变量时,你可以用DO循环先产生。像楼上提的解法一样,其实他都给出答案了,只是缺了一步。
你想要的结果,通过一个merge就可以实现了。将两个数据集合并,你应该会把。具体的代码我就不写了,这样可以实现的。你试试吧。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群