身份证号码包含很多信息,但是 CRAN 却没有提取身份证信息的包,真的很掉链子,因此我开发了 CNID 包1。这个包可以帮助您从中国身份证号码中获取出生日期、性别、地区,由此可以根据这些信息进一步得到对年对月的年龄、只对年的年龄、生肖,星座等信息。规则很简单,但我要考虑更多的情况,例如支持 15 位和 18 位号码,身份证号码中可能有逻辑错误的情况,比如 20220229 等,一旦有逻辑错误,一棍子打死也不合适,这让用户很懵,不知道这个身份证到底哪里有问题,因此我对于有逻辑错误的身份证号码仍然尽可能的提取出局部符合逻辑的信息,例如:一个身份证号只是日期有逻辑错误,但是并不妨碍这个身份证号地区和性别的判断。 为了实现以上功能,附带的我还编制了几个辅助函数,check_id() 用来检查身份证号是否符合逻辑,mdays() 用来计算某年某月有多少天,ydays() 用来计算某年有多少天。具体细节不再赘述,我的 CNID 包已经发布到 CRAN,欢迎使用: 检查身份证号码是否有逻辑错误 library(CNID) id = c( …