全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1206 6
2014-12-12
我的数据结构是这样的:每个姓名对应的 “年龄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



二维码

扫码加我 拉你入群

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

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

全部回复
2014-12-12 12:08:25
真的很希望得到指点呀,困扰好久了。。。。
二维码

扫码加我 拉你入群

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

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

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;


二维码

扫码加我 拉你入群

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

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

2014-12-12 13:23:45
复制代码
我认为你没说明白,猜测如上。
二维码

扫码加我 拉你入群

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

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

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”,只不过遇到缺失值没有累计。
二维码

扫码加我 拉你入群

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

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

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

扫码加我 拉你入群

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

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

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

说点什么

分享

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