请选择 进入手机版 | 继续访问电脑版
楼主: claudiehuang
1799 8

[问答] 求助,面板数据如何保留前三年和后三年啊 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

47%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
0
学术水平
0 点
热心指数
9 点
信用等级
0 点
经验
1612 点
帖子
71
精华
0
在线时间
157 小时
注册时间
2017-10-25
最后登录
2021-4-17

claudiehuang 发表于 2018-8-15 21:53:39 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
求助,面板数据如何保留前三年和后三年啊
比如我的数据是公司是否采取这项政策,采取了为1, 没采取为0;数据是这个样子
公司名 年 政策
A 2000 0
A 2001 0
A 2002 0
A 2003 0
A 2004 0
A 2005 1
A 2006 1
A 2007 1
A 2008 1
A 2009 1

B 2000 0
B 2001 0
B 2002 0
B 2003 0
B 2004 1
B 2005 1
B 2006 1
B 2007 1
B 2008 1
B 2009 1

如何处理可以把数据变成
A 2002 0
A 2003 0
A 2004 0
A 2005 1
A 2006 1
A 2007 1

B 2001 0
B 2002 0
B 2003 0
B 2004 1
B 2005 1
B 2006 1
求大神指导!




二维码

扫码加我 拉你入群

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

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

关键词:如何处理 面板数据 公司名 板数据

回帖推荐

l1i2n3i4n5g 发表于7楼  查看完整内容

data test; input name $ year policy; cards; A 2000 0 A 2001 0 A 2002 0 A 2003 0 A 2004 0 A 2005 1 A 2006 1 A 2007 1 A 2008 1 A 2009 1 B 2000 0 B 2001 0 B 2002 0 B 2003 0 B 2004 1 B 2005 1 B 2006 1 B 2007 1 B 2008 1 B 2009 1 C 2000 0 C 2001 0 C 2002 0 C 2003 0 D 2006 1 D 2007 1 D 2008 1 D 2009 1 ; run; data want1; do i=1 to n; set test(rename=(name=tmp_ ...
已有 1 人评分热心指数 收起 理由
eijuhz + 1 精彩帖子

总评分: 热心指数 + 1   查看全部评分

a19081174622 发表于 2018-8-16 09:40:36 |显示全部楼层 |坛友微信交流群
你看下这样行吗
proc sql;
create table demotest as
select * from test where company='A' and year in(2002,2003,2004,2005,2006,2007)
union
select * from test where company='B' and year in(2001,2002,2003,2004,2005,2006);
quit;

使用道具

a19081174622 发表于 2018-8-16 09:41:00 |显示全部楼层 |坛友微信交流群
proc sql;
create table demotest as
select * from test where company='A' and year in(2002,2003,2004,2005,2006,2007)
union
select * from test where company='B' and year in(2001,2002,2003,2004,2005,2006);
quit;

使用道具

a19081174622 发表于 2018-8-16 09:42:45 |显示全部楼层 |坛友微信交流群
proc sql;
create table demotest as
select * from test where company='A' and year in(2002,2003,2004,2005,2006,2007)
union
select * from test where company='B' and year in(2001,2002,2003,2004,2005,2006);
quit;

使用道具

a19081174622 发表于 2018-8-16 09:44:40 |显示全部楼层 |坛友微信交流群
proc sql;
create table demotest as
select * from test where company='A' and year in(2002,2003,2004,2005,2006,2007)
union
select * from test where company='B' and year in(2001,2002,2003,2004,2005,2006);
quit;

使用道具

a19081174622 发表于 2018-8-16 09:47:10 |显示全部楼层 |坛友微信交流群
这个是你要的结果吗
1A(((W}SVZIIILWTO{K3UX9.png

使用道具

l1i2n3i4n5g 在职认证  发表于 2018-8-16 09:47:55 |显示全部楼层 |坛友微信交流群
data test;
input name $ year policy;
cards;
A 2000 0
A 2001 0
A 2002 0
A 2003 0
A 2004 0
A 2005 1
A 2006 1
A 2007 1
A 2008 1
A 2009 1
B 2000 0
B 2001 0
B 2002 0
B 2003 0
B 2004 1
B 2005 1
B 2006 1
B 2007 1
B 2008 1
B 2009 1
C 2000 0
C 2001 0
C 2002 0
C 2003 0
D 2006 1
D 2007 1
D 2008 1
D 2009 1
;
run;

data want1;
   do i=1 to n;
      set test(rename=(name=tmp_name year=tmp_year policy=tmp_policy)) nobs=n;
      by tmp_policy notsorted;
      if tmp_policy=1 and first.tmp_policy then do;
         do j=i-3 to i+2;
            set test point=j;
            if not missing(policy) and tmp_name=name then output;
         end;
      end;
   end;
   keep name year policy;
run;

使用道具

claudiehuang 发表于 2018-8-16 10:40:38 |显示全部楼层 |坛友微信交流群
a19081174622 发表于 2018-8-16 09:47
这个是你要的结果吗
是这样,但是我有好多个company, 所以一个一个写好像不是很现实。。

使用道具

claudiehuang 发表于 2018-8-16 10:40:55 |显示全部楼层 |坛友微信交流群
l1i2n3i4n5g 发表于 2018-8-16 09:47
data test;
input name $ year policy;
cards;
谢谢!就是这个!

使用道具

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

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

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

GMT+8, 2024-3-29 03:31