楼主: poetony
3638 13

[问答] 真心请教如何填充! [推广有奖]

  • 5关注
  • 0粉丝

已卖:548份资源

本科生

8%

还不是VIP/贵宾

-

威望
0
论坛币
3621 个
通用积分
5.5410
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
457 点
帖子
38
精华
0
在线时间
96 小时
注册时间
2006-10-31
最后登录
2025-12-28

楼主
poetony 发表于 2012-5-13 09:51:15 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有这么一组数据:
Stkcd        nature        year
000002        1        2003
000002        0        2005
000004        1        2006
000004        0        2010
000004        0        2011
000005        0        2007
000006        1        2002
000006        1        2004
000006        1        2010

其中nature的1是国有,0是非国有;year是国有非国有变换性质的时间。
我其实是想要每个股票07年-10年的经济性质。比如000004这个,06年是1,那07、08、09三年都填充成1,10年是0就保留。
其余类似。

真心请教如何才能实现?请大牛帮忙~~~~
二维码

扫码加我 拉你入群

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

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

关键词:Nature stkcd year ear 非国有 填充 真心 如何

回帖推荐

sinksought 发表于3楼  查看完整内容

看看行不? data stk; input stkcd nature year; cards; 000002 1 2003 000002 0 2005 000004 1 2006 000004 0 2010 000004 0 2011 000005 0 2007 000006 1 2002 000006 1 2004 000006 1 2010 ; run; proc sort data=stk out=stk1; by stkcd year nature ; run; /*填 ...

本帖被以下文库推荐

沙发
endogeneity 发表于 2012-5-13 10:56:55
  1. data firm;
  2.         input Stkcd $  nature  year ;
  3.         cards;
  4.         000002        1        2003
  5.         000002        0        2005
  6.         000004        1        2006
  7.         000004        0        2010
  8.         000004        0        2011
  9.         000005        0        2007
  10.         000006        1        2002
  11.         000006        1        2004
  12.         000006        1        2010

  13. run;

  14. data firm2;
  15. set firm;
  16. format year year4.;
  17. run;
复制代码
怎么我这么运行完,year都变成1965了,这是咋回事啊?
如果能将year变成时间格式,我就有办法解决楼主的问题了

藤椅
sinksought 发表于 2012-5-13 17:48:29
看看行不?
data stk;
  input stkcd nature year;
cards;
000002        1        2003
000002        0        2005
000004        1        2006
000004        0        2010
000004        0        2011
000005        0        2007
000006        1        2002
000006        1        2004
000006        1        2010
;
run;

proc sort data=stk out=stk1;
  by stkcd  year nature ;
run;

/*填充缺失的年数*/
data stkcd2;
  set stk1;
    by stkcd year nature ;
  retain year1;
  if first.stkcd then year1=year;
  if (year-year1)>1 then do i=1 to (year-year1);
                                                   year1+1;
                           output;
                        end;
                                        else if (year-year1)<=1 and not (first.stkcd) then do;
                                             year1+1;
                                           output;
                                         end;

                                         else do;
                                           output;
                                         end;

  drop i ;
run;

/*标记nature的变化*/
proc sql noprint;
   create table stkcd3 as
      select a.nature as nature1
                 ,b.*
                          from stkcd2 as b
                             left join
                               stk as a
                          on a.stkcd=b.stkcd and a.year=b.year1;
quit;

data stkcd4;
  set stkcd3;
  retain nature3;
  if nature1 ne . then nature3=nature;
  drop nature1 nature year;
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

板凳
poetony 发表于 2012-5-14 17:33:39
真是太感谢了!打死我也写不出这样的程序~~~
狂赞!!!

还有一个小问题,可能我没有表达清楚。
比000002这个,我希望把05年的状态传到06、07、08、09、10年去。这个该怎么办呢?

报纸
poetony 发表于 2012-5-14 17:37:20
endogeneity 发表于 2012-5-13 10:56
怎么我这么运行完,year都变成1965了,这是咋回事啊?
如果能将year变成时间格式,我就有办法解决楼主的问 ...
不妨手工把几个年份改一下。关键想知道您后面怎么做。谢谢~~

地板
jingju11 发表于 2012-5-14 23:51:05
endogeneity 发表于 2012-5-13 10:56
怎么我这么运行完,year都变成1965了,这是咋回事啊?
如果能将year变成时间格式,我就有办法解决楼主的问 ...
2003 days are about 5 to 6 years. Oftentimes SAS calculates dates from 1960. after 5 to 6 years, it is about year 1965.
here you have no reason to put year. format to a year value.

7
jingju11 发表于 2012-5-15 05:08:17

8
denver 发表于 2012-5-15 08:46:24
jingju11 发表于 2012-5-15 05:08
欢迎阅读。
http://blog.sina.com.cn/s/blog_a3a92636010133hj.html
数组应用的高手啊
Denver大家一起读Paper系列索引贴:
https://bbs.pinggu.org/thread-1430892-1-1.html

9
denver 发表于 2012-5-15 08:54:08
jingju11 发表于 2012-5-14 23:51
2003 days are about 5 to 6 years. Oftentimes SAS calculates dates from 1960. after 5 to 6 years, i ...
如果我就是想把这列转换成时间格式,怎么做呢?手册里的例子都是具体到日期的,单纯的这种年,还是没遇到过。
Denver大家一起读Paper系列索引贴:
https://bbs.pinggu.org/thread-1430892-1-1.html

10
jingju11 发表于 2012-5-15 09:00:02
denver 发表于 2012-5-15 08:54
如果我就是想把这列转换成时间格式,怎么做呢?手册里的例子都是具体到日期的,单纯的这种年,还是没遇到 ...
如果是date值,用YEAR()获取年份。在这里你应该不关心具体的日期。其实我或许不是非常理解你的问题。京剧

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 06:50