15.2.2 数据字段的数据类型转换
数据预处理过程中,不仅涉及缺失值和异常值的处理,还包括数据类型的转换等工作。下面介绍如何对Sina数据集对象中的字段进行数据类型转换。
以性别字段为例,考虑到性别字段为0-1类型的二分变量,在R语言的数据分析中,可以将该字段变量转换为因子类型。有关因子类型变量的特性可以查阅本书第3章相关内容。性别字段转换为因子类型的示例代码如下:
数据类型化是指将文字性、描述性的数据字段按照特定规则转化为可以进行数学处理的数据字段。以Sina数据集为例,其性别变量有两种类型,为方便后续分析,可以将female用数字1代替,male用数字0代替。同样,是否为会员用户也可以采用相同方式处理,会员用户可表征为数字1,非会员用户可表征为数字0。可以采用stringr包中的str_replace()函数实现上述数据类型化操作,示例代码如下:
对数据和数据类型比较敏感的读者可以注意到,分析中遇到的数据类型大多为字符型,即使像用户数、微博数等数字类型的数据也以字符形态存储,这与数据爬取后存储数据的方式有关。R语言无法对字符类型的数据进行数学运算,也无法用于后续的逻辑回归分析。为此,需要将本属于数据型但存储为字符型的数据字段转化为数值型数据。本例中,需要转换为数值型数据的变量有关注数、粉丝数、微博数、活跃天数、收费会员成长速度和收费会员成长值等,相应的转换代码如下:
前文提到,用于分析的用户等级变量是无缺失值的数值或者因子类型数据,所以接下来需要转换用户等级字段的数据格式。首先,根据数据实际情况,将该字段的数据记录全部转换为大写,统一格式;然后,使用str()函数查看转换后的字段数据类型。相应的示例代码如下:
查看结果发现,上述处理已将用户等级字段中的“LV”去除,但数据中出现了“0.”等异常值,在将该字段转换为因子类型数据前,需将这些异常数据记录剔除,示例代码如下:
接下来,需要转换为因子类型的变量还有表征收费用户状态的2个变量:是否为收费会员和收费会员等级,因子类型转换的示例代码如下:
考虑到后续的数据分析需要在已有变量基础上衍生一个新变量——使用时长,即注册时间和数据爬取日期(2014年12月31日)之差,为此,我们可以对已有的变量进行数学运算,生成新变量,示例代码如下:
对于剩余不用于分析的变量,如微博昵称、微博URL、标签、地址、注册时间、生日、微博名称、简介、是否为认证用户等,可以考虑删除。需要指出的是,爬取数据时要尽可能爬取页面上的所有数据字段,以备后续使用。但实际用于分析时可以有所取舍,无用的数据字段在分析时可以选择剔除,以降低电脑内存开销。删除数据字段的示例代码如下:
为了解决数据集字段可能出现的中文乱码问题,建议使用reshape包中的rename()函数将中文变量名改为英文变量名,示例代码如下:
通过上述预处理步骤,用于后续分析的数据集留存11个变量,172 672条记录。