原始数据一般分散杂乱,并含有缺失和错误值,因此在进行数据分析前首先要对数据进行整理。
一、首先,了解原始数据的结构。
可使用如下函数(归属baseR)来查看数据结构:
class(dataobject) 查看数据对象的类别
dim(dataobject) 查看数据的维度
names(dataobject) 查看列名
str(dataobject) 查看数据概要
glimpse(dataobject) 查看数据概要
二、将数据变得整洁
可使用下列函数(归属package: tidyr)整理数据:
1. gather(data, key, value, -col ) 将多个列收紧成关键列值,宽数据变成长数据。
2. spread(data, key, value) 将关键列值扩展成多个列,长数据变成宽数据。
3. separate(data, col, into, sep = "") 将一列分成多列。
4. unite(data, col, ..., sep = "") 将多列合成一列。
杂乱数据的特征和对应处理函数:
1.列名是值(value)而不是变量(variable) ---gather
2.变量同时存在行和列中 ---spread
3.多个变量位于同一列 ---seperate
4.单个观测值位于多张数据表中,多个类型单元位于同张数据表 ---seperate+unite
三、准备用于分析的数据
1.数据的类别如下,可调用class()查看数据的类别,也可使用as.numeric()、as.factor()等函数来转换类别。
character
numeric
integer
factor
logical
2.对日期和时间的处理
需装载的package:lubridate
调用的函数:ymd_hms(), ymd()等。 ymd_hms 对应:年月日_时分秒
例子:
> dmy("17 Sep 2015")
[1] "2015-09-17"
3.字符串的处理
需装载的package:library(stringr)
调用的函数:
str_pad(string, width, side = c("left", "right", "both"), pad = " ") 填充字符串
str_trim(string) 清除字符串首尾空格
str_detect(string, pattern) 检测字符串中是否存在某个pattern
str_replace(string, pattern, replacement) 替代字符串中匹配的pattern
na.omit(df) 移除有缺失值的行
complete.cases(df) 查看没有缺失值的行
下面两个字符处理函数在baseR中
toupper(string) 转换成大写
tolower(string) 转换成小写
4. 缺失值和特殊值(miss and special value)
在R中,缺失值一般用NA表示。特殊值有 Inf(无穷值)、NaN(not a number)。
查看数据中是否有NA:
is.na(data)
any(is.na(data))
查看数据中没有缺失值的行:complete.cases(data)
在数据中移除有缺失值的行:na.omit(data)
5.处理数据中的异常值和明显错误
常用summary() 和 hist() 函数来确认异常值(或极端值)