SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1627|回复: 6
打印 上一主题 下一主题

如何计算年龄?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2008-1-29 13:53:20 | 只看该作者

如何计算年龄?

现有2个日期型变量,格式为年月(6位数),不知如何算出其年龄?谢谢!
data a ;
input a yymmn6. b  yymmn6.;
cards;
194009        200706
194702        200706
194701        200706
195001        200706
193811        200706
193004        200706
;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2008-1-29 14:06:40 | 只看该作者

Re: 如何计算年龄?

data b;
set a;
yya=input(substr(a,1,4),4.);
mma=input(substr(a,5,2),2.);
yyb=input(substr(b,1,4),4.);
mmb=input(substr(b,5,2),2.);
age=intck('year',mdy(mmb,0,yyb),mdy(mma,0,yya));
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2008-1-29 19:26:43 | 只看该作者

Re: 如何计算年龄?

[code:1lj1pwbn]
data a ;
input a:yymmn6. b:yymmn6.;
cards;
194009 200706
194702 200706
194701 200706
195001 200706
193811 200706
193004 200706
;
run;
data result;
set a;
age=intck('year',a,b);
run;
[/code:1lj1pwbn]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2008-1-30 12:29:47 | 只看该作者

Re: 如何计算年龄?

不错,问题解决了,谢谢!!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2008-1-30 14:43:24 | 只看该作者

Re: 如何计算年龄?

Age =  floor((intck('month',birthdate, currentdate)- (day(birthdate)<day(currentdate)))/12);
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2008-2-2 15:35:28 | 只看该作者

Re: 如何计算年龄?

我在一家CRO公司从事统计分析的工作,公司常规的做法是:age=int((mdy(mmb,0,yyb)-mdy(mma,0,yya))/365.25).但是如果碰到月日相同时,用这种方法就比实际年龄小一岁,所以在这种情形下,我们就加一岁。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2008-2-15 20:27:46 | 只看该作者

to haiyangdexin

在一份SAS培训教程里,计算年龄也是用你所示的365.25,大致如下,原帖在[url:mjg0p2uq]http://www.cos.name/bbs/read.php?tid=9558[/url:mjg0p2uq]

[code:mjg0p2uq]
data a ;
  input a yymmn6. b yymmn6.;
  format a yymmn6.;
  format b yymmn6.;
cards;
194009200706
194702200706
194701200706
195001200706
193811200706
193004200706
;
run;

data b;
   set a;
   age=(b-a)/365.25;
   age_int=ceil(age);
run;
[/code:mjg0p2uq]
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-4 14:02 , Processed in 0.077983 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表