R语言实例-身份证信息提取

1、身份证信息说明

15位身份证号码:第7、8位为出生年份(两位数),第9、10位为出生月份,第11、12位代表出生日期,第15位代表性别,奇数为男,偶数为女。   

18位身份证号码:第7、8、9、10位为出生年份(四位数),第11、第12位为出生月份,第13、14位代表出生日期,第17位代表性别,奇数为男,偶数为女。

2、R语言实现

#出生日期处理函数
afunc<-function(id){
	if(nchar(id)==15)
		paste('19',substr(id,7,12),sep="")
	else
		substr(id,7,14)
}

#性别处理函数
bfunc<-function(id){
	if(nchar(id)==15)
		ifelse(as.numeric(substr(id,15,15)) %% 2 ==1,'M','F')
	else
		ifelse(as.numeric(substr(id,17,17)) %% 2 ==1,'M','F')
}

3、测试

(1)测试数据

330622810725323
110221290815224
431021197306142736
431128197009055759
440700197510019150
360731196804216811
150123195103126841
222424195110306886
61102319591227666X
141182195505236567
220182196410190862
14062219620604034X
341124196902230765

(2)测试

#测试数据
ids<-c("330622810725323","110221290815224","431021197306142736","431128197009055759","440700197510019150","360731196804216811","150123195103126841","222424195110306886","61102319591227666X","141182195505236567","220182196410190862","14062219620604034X","341124196902230765")

#转换为矩阵
m.testdat<-matrix(ids,ncol=1)

#提取出身日期和性别
birthday<-apply(m.testdat,1,afunc)
gendor<-apply(m.testdat,1,bfunc)

result<-data.frame(ids,birthday,gendor)
print(result)

输出结果:

                  ids birthday gendor
1     330622810725323 19810725   M
2     110221290815224 19290815   F
3  431021197306142736 19730614   M
4  431128197009055759 19700905   M
5  440700197510019150 19751001   M
6  360731196804216811 19680421   M
7  150123195103126841 19510312   F
8  222424195110306886 19511030   F
9  61102319591227666X 19591227   F
10 141182195505236567 19550523   F
11 220182196410190862 19641019   F
12 14062219620604034X 19620604   F
13 341124196902230765 19690223   F



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值