全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1675 8
2013-03-30
在处理股票分红与否时,分红标为1,不分红利的股票标为0。现在已经有上市股票分红的年份,现在想用sas程序把未分红的其他年份加上,求指教。如
股票代码      年份      分红与否
000005        1992        1
000005        1994        1
000005        1995        1
000005        1996        1
在此处我就想添加1993年的变成:
000005     1992    1
000005     1993    0
000005     1994    1
000005     1995    1
000005     1996    1
由于股票较多且分红没有规律,所以缺失年份也没怎么有规律,求大神指教如何编程。。。拜谢了
二维码

扫码加我 拉你入群

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

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

全部回复
2013-3-30 21:29:07
出来抛个砖,希望对楼主有帮助
data raw;
input code year money;
cards;
000005        1992        1
000005        1994        1
000005        1995        1
000005        1996        1
;
run;

data dummy;
do code=000005;
do year=1992 to 1996;
   money=0;
        output;
   end;
end;
run;

proc sort data=raw;
        by code year;
run;

proc sort data=dummy;
        by code year;
run;

data final;
        merge dummy raw        ;
    by         code year;
run;
二维码

扫码加我 拉你入群

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

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

2013-3-30 23:43:38
感谢playmore大侠多次提醒,Proc  Timeseries  很是简单。

data test (drop=y);
input StockID $ y Code;
year = mdy(1,1,y);
datalines;
000005        1992        1
000005        1994        1
000005        1995        1
000005        1996        1
000006        1991        1
000006        1995        1
; run;

proc timeseries data=test out=Test_Fill;
    by StockID;
    ID year interval = year;
        var code / setmiss=0;
run;
proc print data=test_filled; title 'test_fill'; run;
二维码

扫码加我 拉你入群

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

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

2013-3-31 12:07:50
yongyitian 发表于 2013-3-30 23:43
感谢playmore大侠多次提醒,Proc  Timeseries  很是简单。

data test (drop=y);
运行你的代码,产生的数据集是想要的,但是log窗口是如下的warning,不知道有没好的办法去掉这些warning,还望不吝赐教,谢谢!
WARNING: 1 observations have been omitted before observation number 2 in data set WORK.TEST according
         to the INTERVAL=YEAR specification and the ID variable values. The current ID is year=12419,
         the previous is year=11688.
NOTE: The above message was for the following BY group:
      StockID=000005
WARNING: 3 observations have been omitted before observation number 6 in data set WORK.TEST according
         to the INTERVAL=YEAR specification and the ID variable values. The current ID is year=12784,
         the previous is year=11323.
二维码

扫码加我 拉你入群

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

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

2013-3-31 13:01:12
Eternal0601 发表于 2013-3-31 12:07
运行你的代码,产生的数据集是想要的,但是log窗口是如下的warning,不知道有没好的办法去掉这些warning, ...
这些warning 说的是在第几个观测值有几个缺矢值。
觉得是proc timeseries 给出的 警告。

查了一下, sas 只能suppress error.  不能 suppress warning

详细请见
http://support.sas.com/kb/24/487.html
二维码

扫码加我 拉你入群

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

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

2013-3-31 13:16:51
yongyitian 发表于 2013-3-31 13:01
这些warning 说的是在第几个观测值有几个缺矢值。
觉得是proc timeseries 给出的 警告。
喔,谢了,不过感觉用系统的option强制性关闭warning的显示没啥意义
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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