楼主: xiangjiafeng
1260 6

一个时间序列 计数 的问题 [推广有奖]

  • 1关注
  • 0粉丝

本科生

2%

还不是VIP/贵宾

-

威望
0
论坛币
8 个
通用积分
0.9000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
436 点
帖子
48
精华
0
在线时间
82 小时
注册时间
2011-11-20
最后登录
2022-12-15

楼主
xiangjiafeng 发表于 2014-12-12 12:05:05 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我的数据结构是这样的:每个姓名对应的 “年龄1 ”的第一条是正确的,接下来如果不缺失的话就是错误的,所以我要生成”年龄2“ 使其第一条与年龄1 对应,而接下来只要没有缺失就随着年份+1.  可是,我只能得到年龄3的结果,请有时间的大神帮帮忙吧!如何得到“年龄2”的结果呢?
代码年份姓名年龄1年龄2年龄3

1

2001

A22

2

1

2002

A..

3

1

2003

A11

4

1

2004

A1.52

5

1

2005

A2.53

6

1

2006

A..

7

1

2001

B11

1

1

2002

B1.52

2

1

2003

B2.53

3

1

2004

B..

4

1

2005

B33

5

1

2006

B3.54

6

2



二维码

扫码加我 拉你入群

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

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

关键词:时间序列 数据结构 接下来 如何 姓名

沙发
xiangjiafeng 发表于 2014-12-12 12:08:25
真的很希望得到指点呀,困扰好久了。。。。

藤椅
liudeng2005 发表于 2014-12-12 12:17:03

2

proc sort data=a ;
by 姓名 年份;

data a1;
set a;
by 姓名 年份;
retain age2;
if first.姓名 then age2=age1;
else age2+1;
run;


板凳
Tigflanker 发表于 2014-12-12 13:23:45
  1. data have;
  2. input year name $ age1;
  3. cards;
  4. 2001 A        2       
  5. 2002 A        .       
  6. 2003 A        1       
  7. 2004 A        1.5
  8. 2005 A        2.5
  9. 2006 A        .       
  10. 2001 B        1       
  11. 2002 B        1.5
  12. 2003 B        2.5
  13. 2004 B        .       
  14. 2005 B        3       
  15. 2006 B        3.5
  16. ;run;

  17. data maybe;
  18.   set have;
  19.   by name notsorted;
  20.   
  21.   retain age2;
  22.   if first.name then age2 = age1;
  23.   else age2 + ~missing(age1);
  24. run;
复制代码
我认为你没说明白,猜测如上。

报纸
xiangjiafeng 发表于 2014-12-12 21:10:25
Tigflanker 发表于 2014-12-12 13:23
我认为你没说明白,猜测如上。
谢谢您的回答,但是您的方法产生的age2数据不是我想要的,因为它将同一个name的每一年都进行了累计。而我想得到的结果是如果age1是缺失值,age2就也是缺失值。即name对应的2001年的age1是对的,是要保留的,接下来用2001年的age1+1成为2002,age1+2是2003年........如果遇到缺失值则终止累计。age1缺失值后的第一个数值是正确的,再重新开始以它为起点累计。结果就应该是我的原文中“年龄2”,而您的方法能得到“年龄3”,只不过遇到缺失值没有累计。

地板
xiangjiafeng 发表于 2014-12-12 21:11:52
liudeng2005 发表于 2014-12-12 12:17
proc sort data=a ;
by 姓名 年份;
谢谢您的回复,但,不是这么简单,您的结果得到是"年龄3",而我想要的是“年龄2”的结果

7
liudeng2005 发表于 2014-12-15 10:12:49
你是来消遣哥的么!

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

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