楼主: zljwanzi25
2238 10

请教各位这个程序怎么编 [推广有奖]

  • 0关注
  • 1粉丝

已卖:68份资源

博士生

52%

还不是VIP/贵宾

-

威望
0
论坛币
1775 个
通用积分
0
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
763 点
帖子
180
精华
0
在线时间
327 小时
注册时间
2006-11-22
最后登录
2021-12-6

楼主
zljwanzi25 发表于 2013-5-10 15:16:16 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我现在想利用身份证号推算人的年龄,该如何编程呢?

我的程序比较麻烦,看看能不能帮我简化一下:

data m;
format cust_id $18. birth date9.;
input cust_id $18.;
birth=mdy(input(substr(cust_id,11,12),$2.),input(substr(cust_id,13,14),$2.),input(substr(cust_id,7,10),$4.));
cards;
150422193810130044;
run;

二维码

扫码加我 拉你入群

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

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

关键词:SUBSTR format Input Birth FORMA 程序

沙发
heperwong 在职认证  发表于 2013-5-10 15:24:34
kankan

藤椅
heperwong 在职认证  发表于 2013-5-10 15:35:37
LZ的code有点小错误,可以这样写:
  1. data m;
  2. format cust_id $18. birth date9.;
  3. input cust_id $18.;
  4. birth=mdy(input(substr(cust_id,11,2),best.),input(substr(cust_id,13,2),best.),input(substr(cust_id,7,4),best.));
  5. year=yrdif(birth,today(),'ACTUAL');
  6. cards;
  7. 150422193810130044
  8. ;
  9. run;
复制代码
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
webgu + 80 + 80 精彩帖子
jingju11 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 80  论坛币 + 80  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

板凳
boe 发表于 2013-5-10 15:48:49
birth1=intck('year',input(substr(cust_id,7,8),yymmdd8.),today());
birth2=int((today()-input(substr(cust_id,7,8),yymmdd8.))/365.25);
bitrh3=yrdif(input(substr(cust_id,7,8),yymmdd8.),today(),'actual');
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
webgu + 100 + 100 精彩帖子
jingju11 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 100  论坛币 + 100  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

Gorgeous girl , I love !

报纸
yuerqieqie 发表于 2013-5-11 05:41:58
data m;
format cust_id $18. birth date9.;
input cust_id $18.;
birth=input(substr(cust_id,7,8), yymmdd8.) ;
cards;
150422193810130044
;
run;
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
webgu + 60 + 60 精彩帖子
jingju11 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 60  论坛币 + 60  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

地板
jingju11 发表于 2013-5-11 07:54:31
小小的问题糜集了很优秀的sas 使用者。真是受益匪浅,京剧。

7
zljwanzi25 发表于 2013-5-13 09:39:21
yuerqieqie 发表于 2013-5-11 05:41
data m;
format cust_id $18. birth date9.;
input cust_id $18.;
是能实现我的要的结果。不知道这是什么原理呢?请高手指教!

8
yuerqieqie 发表于 2013-5-13 20:39:04
zljwanzi25 发表于 2013-5-13 09:39
是能实现我的要的结果。不知道这是什么原理呢?请高手指教!
substr(cust_id,7,8)提取了19381013。input将字符串按照informat (这里是yymmdd8.)转换为数字。

“The INPUT function returns the value produced when a SAS expression is read using a specified informat.”

9
webgu 发表于 2013-5-13 21:35:36
现在还有15位的身份证号吗?有的话就还需要做个区分。
已有 1 人评分热心指数 信用等级 收起 理由
boe + 1 + 1 谢谢。

总评分: 热心指数 + 1  信用等级 + 1   查看全部评分

SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

10
playmore 发表于 2013-5-14 09:17:55
上面说的都对
另外如果要保持下健壮性的话
可以用正则
网上关于身份证号的正则表达式很多
搜一下就好了
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

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

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