setwd("C:/Users/zmj/Desktop")
chuli=read.csv("chuli.csv")
library(stringr)
sfz<-chuli[,1]
sfz
data=as.numeric(str_sub(sfz,7,14))
sfz2=2019-floor(data/10000)
sex=as.numeric(str_sub(sfz,-2,-2))
sex
gender<-NA
gender[sex%%2==0]="女"
gender[sex%%2==1]="男"
output=data.frame(data,sfz2,gender)
write.csv(output,file = "output.csv")
首先通过stringr包中的str_sub截取身份证的7-14位数字,这样就可以获得出生年月。
data=as.numeric(str_sub(sfz,7,14))
计算年龄我是直接用出生年月/10000,取下限计算年份,
sfz2=2019-floor(data/10000)
也可以直接在身份证上面截取年份
sfz2=2019-str_sub(sfz,7,10)
最后是性别,我只用判断身份证倒数第二位是奇数还是偶数即可,这里我只想得到模运算,算余数
gender[sex%%2==0]="女"
gender[sex%%2==1]="男"
本文介绍了一种使用R语言从身份证号码中提取出生日期和性别信息的方法。通过stringr包截取身份证号的特定部分,计算年龄并确定性别。该过程涉及数据读取、字符串操作和数据框创建。

被折叠的 条评论
为什么被折叠?



