15.2.1 数据字段的缺失值处理

15.2.1 数据字段的缺失值处理

由前面叙述可知,数据集有20个字段,那么应该从哪个字段开始入手呢?观察数据集的描述统计分析结果不难发现,微博URL是20个字段中具有唯一性的变量。首先,从微博URL字段入手,保证每条记录是抓取的具有唯一ID的微博记录;其次,从性别字段入手;最后从关注数、粉丝数和微博数入手,因为这三个字段是必须分析的数据字段,对其剔除缺失值后才能开展后续分析。

首先使用duplicated()函数对微博URL字段进行去重处理。对具有唯一性的变量去重,可以确保预处理后的数据记录中不会有重复的用户微博URL,代码如下:

经过上述步骤,具有唯一ID的微博记录数变为180 563条。接下来,开始处理性别字段,对性别字段进行统计的示例代码如下:

观察统计结果发现,在这个变量里出现了三种类型:male、female和性别,且性别记录只有一条,考虑到数据记录有18万条,所以这条异常值可以删除。在处理大批量数据记录时,删除若干不影响分析结果的数据记录,不影响分析的信度和效度,示例代码如下:

此时可以看到数据集中还剩下180 562条数据,其中,female有88 795条,male有91 476条,数据类型为字符型。

如果使用describe()函数对数据进行描述性统计,可以发现性别变量中有缺失值。为此,采用的预处理步骤如下:首先,建立缺失值索引;然后,根据索引删除数据集中的缺失值。值得注意的是,预处理数据应遵循的首要原则是不影响分析结果的准确性,如果数据值缺失较多,可以采用均值填充、众数填充等替代方法。删除性别变量缺失值的代码如下:

以此类推,使用上述步骤依序删除数据集中关注数、粉丝数和微博数字段的缺失值,示例代码如下:

经过上述一系列处理后,数据集还有173 492条记录。

在后续分析中需要用到的变量字段还有用户等级,该字段存在1 372个缺失值,并且用户等级的表现形式为LVn,考虑到希望得到的数据无缺失值,且为因子类型,首先对该字段的缺失值予以剔除,后续再进行数据类型的转换。用户等级字段缺失值处理的代码示例如下:

接下来针对注册时间字段进行预处理,该字段剔除缺失值的代码如下:

然后使用lubridate包中的ymd()函数将注册时间转换为日期类型数据。此时可以看到以下警告信息:

以上警告信息说明该字段数据中有446条记录无法转为日期类型数据,因此,可以将其视为缺失值予以剔除,示例代码如下: