楼主: XYZ_cherry
583 8

[程序分享] sas中知道体检日期和实际年龄,求出生年份的程序 [推广有奖]

  • 0关注
  • 0粉丝

高中生

10%

还不是VIP/贵宾

-

威望
0
论坛币
6 个
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
107 点
帖子
11
精华
0
在线时间
32 小时
注册时间
2017-12-17
最后登录
2018-10-15

XYZ_cherry 发表于 2017-12-19 17:03:49 |显示全部楼层
请各位大神指教:
已知体检日期和实际年龄,如何用sas程序算出出生年份,急急急!

数据.xlsx

8.91 KB

类似于此类数据

stata SPSS
XYZ_cherry 发表于 2017-12-19 17:06:51 |显示全部楼层
序号        姓名        性别        年龄        体检日期
1        王媛        女        28        20150101
2        刘婷婷        女        35        20160815
3        刘超然        男        48        20170101
4        张三        男        20        20170101
5        李四        男        25        20170101
此类数据
回复

使用道具 举报

lovexialulu 发表于 2017-12-19 17:30:29 |显示全部楼层
本帖最后由 lovexialulu 于 2017-12-19 17:41 编辑

不知道是不是这个rule  :
int((date-x+1)/365.25)=age 等价于 age<=(date-x+1)/365.25<age+1。 算出来应该是个范围
  1. data a;
  2. input id age date $10.;
  3. cards;
  4. 1 28 2015-01-01
  5. 2 35 2016-08-15
  6. 3 48 2017-01-01
  7. 4 20 2017-01-01
  8. 5 25 2017-01-01
  9. ;
  10. run;

  11. data b;
  12. set a;
  13. date_=input(date,yymmdd10.);
  14. birth_min=ceil(date_-age*365.25+1);
  15. birth_max=ceil(date_-(age+1)*365.25+1);
  16. format birth_min birth_max yymmdd10.;
  17. run;
复制代码

回复

使用道具 举报

superguy333 发表于 2017-12-19 19:21:10 |显示全部楼层
  1. data a;
  2. input id age date $10.;
  3. cards;
  4. 1 28 20150101
  5. 2 35 20160815
  6. 3 48 20170101
  7. 4 20 20170101
  8. 5 25 20170101
  9. ;
  10. run;

  11. data b;
  12. set a;
  13. BIRTH_YEAR=SUBSTR(DATE,1,4)-AGE;
  14. RUN;
复制代码
捕获.PNG
回复

使用道具 举报

XYZ_cherry 发表于 2017-12-28 15:23:04 |显示全部楼层
superguy333 发表于 2017-12-19 19:21
学习了,谢谢
回复

使用道具 举报

XYZ_cherry 发表于 2017-12-28 15:23:06 |显示全部楼层
superguy333 发表于 2017-12-19 19:21
学习了,谢谢
回复

使用道具 举报

XYZ_cherry 发表于 2017-12-28 15:23:08 |显示全部楼层
superguy333 发表于 2017-12-19 19:21
学习了,谢谢
回复

使用道具 举报

舍身卫道 发表于 2018-1-10 10:08:56 |显示全部楼层
  1. data a;
  2. input id age date $10.;
  3. cards;
  4. 1 28 20150101
  5. 2 35 20160815
  6. 3 48 20170101
  7. 4 20 20170101
  8. 5 25 20170101
  9. ;
  10. run;

  11. data b;
  12.         set a;
  13.     birth=year(intnx('year',input(date,yymmdd10.),-age));
  14. run;
复制代码
回复

使用道具 举报

yuchengdong521 学生认证  发表于 2018-1-26 09:01:11 |显示全部楼层
舍身卫道 发表于 2018-1-10 10:08
学习了学习了
回复

使用道具 举报

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

GMT+8, 2018-10-17 03:15