R清洗数据之我见

近期在清洗“十二五传染病重大专项”的数据,看似简单的东西却反反复复折腾了许久,“脏数据”里面需要注意的细节真的很多。本期与大家一起分享一些R清洗数据的小窍门,也算是对既往工作的一个小小总结,以备后用。

1.首先,数据中可能会有身份证号、电话号码等长串数值变量,读入进R会变成科学计数法的形式,这时我们可以先将其变为字符型as.character( ),再在前面加上一个字母再保存paste0( )。

2.接着,我们想看看身份证号的位数正确与否nchar( ),假设身份证是15位,找出来那些不正确的which( )。用which很重要,尤其是当数据中有缺失时,不用which会将缺失的和满足条件的全找出来。

3.接着,我们想看看数据集中的身份证号是否有重复duplicated( ),是否有缺失is.na( )

4.接着,假设数据集里面没有性别这个变量,而我们想知道,这时可以从身份证号提取substr( )。身份证号的倒数第二位是偶数代表女性,奇数代表男性,%%代表取余数,能整除者为代表女性,余数为1代表男性。同理,我们也可以将出生年月日提取出来,从而算出年龄。

5.接着,有的人身份证号最后一位是X,而可能数据录入时有的大写有的小写,此时要将其统一为大写toupper( ),或者统一为小写tolower( )

6.接着,数据集中的年龄在录入时有的加了“岁”,有的没加,为分析方便,统一只提取数字parse_number( ),并且想按照年龄大小重新排序order( )

7.接着,想要按照唯一识别列身份证号,将两个数据集的信息合并

merge( )

8.接着,你可能想要把出生日期改为日期格式

as.Date( ),或者提取年月日。

9.R产生的一些特殊符号的释义。

NA:缺失数据

NaN:无意义的数,比如sqrt(-2)

Inf:正无穷大

-Inf:负无穷大

10.特定格式搜索与替换sub( )

11.如果想要对某列变量,如身高,向上ceiling( )或者向下floor( )取整数。

最常用到就是这些了,清洗过的数据库不算多,遗漏之处或者朋友们觉得很重要的小函数请不吝留言施教于我!

关注本号,每周三给你好看!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181010G0IZB200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券