楼主: hsst
1431 8

如何添加缺失的年份,并将其标为0 [推广有奖]

  • 0关注
  • 10粉丝

博士生

92%

还不是VIP/贵宾

-

威望
0
论坛币
974 个
通用积分
0.0145
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
46800 点
帖子
267
精华
0
在线时间
487 小时
注册时间
2010-7-2
最后登录
2021-5-14

楼主
hsst 在职认证  发表于 2013-3-30 19:51:49 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
在处理股票分红与否时,分红标为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
由于股票较多且分红没有规律,所以缺失年份也没怎么有规律,求大神指教如何编程。。。拜谢了
二维码

扫码加我 拉你入群

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

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

关键词:sas程序 股票代码 求指教 如何

沙发
Eternal0601 发表于 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;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
hsst + 1 + 1 + 1 热心帮助其他会员

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

使用道具

藤椅
yongyitian 发表于 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;
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
hsst + 1 + 1 + 1 好的意见建议
Eternal0601 + 1 + 1 + 1 精彩帖子

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

使用道具

板凳
Eternal0601 发表于 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.

使用道具

报纸
yongyitian 发表于 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

使用道具

地板
Eternal0601 发表于 2013-3-31 13:16:51 |只看作者 |坛友微信交流群
yongyitian 发表于 2013-3-31 13:01
这些warning 说的是在第几个观测值有几个缺矢值。
觉得是proc timeseries 给出的 警告。
喔,谢了,不过感觉用系统的option强制性关闭warning的显示没啥意义

使用道具

7
hsst 在职认证  发表于 2013-3-31 14:56:29 |只看作者 |坛友微信交流群
Eternal0601 发表于 2013-3-30 21:29
出来抛个砖,希望对楼主有帮助
data raw;
input code year money;
谢谢你的热心回答,从中学习了很多,谢谢哈

使用道具

8
hsst 在职认证  发表于 2013-3-31 14:58:16 |只看作者 |坛友微信交流群
yongyitian 发表于 2013-3-30 23:43
感谢playmore大侠多次提醒,Proc  Timeseries  很是简单。

data test (drop=y);
你的程序一般化,所以较好理解和操作,按照你的程序,已经达成目的,大牛,赞一个,感谢你的热心帮助

使用道具

9
hsst 在职认证  发表于 2013-3-31 14:59:34 |只看作者 |坛友微信交流群
Eternal0601 发表于 2013-3-31 12:07
运行你的代码,产生的数据集是想要的,但是log窗口是如下的warning,不知道有没好的办法去掉这些warning, ...
warning确实有,我运行我数据时也出现了,不过只要不是error都好说

使用道具

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

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

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

GMT+8, 2024-5-6 18:52