2数据管理与可视化
2.1数据预处理
在进行正式的数据分析之前,通常要对数据进行处理。而读取数据仅仅是最简单的,之后还要进行数据的筛选、排序、转换等。数据框是最方便的数据存储、管理对象。R有很多内置的示例数据集包括向量、矩阵数据框等,可以使用data()进行查看,接下来我们以R内置数据mtcars(32辆汽车在11个指标上的数据)为例进行分析,如下所示:
⑴内容添加与修改
①添加修改新变量
函数transform()可以在数据框中创建新变量,并使用其他变量进行赋值,如下所示:
mydata=transform(mtcars,
sums=gear+carb,
means=(disp+hp)/2)
运行结果如下:
within()函数可以在数据框内部进行操作,下面我们添加一新的类别变量:
mydata=within(mydata, {
size=NA #创建变量
size[sums<6]="low"
size[sums>=6 & sums<=8]="mid"
size[sums>8]="high"
size[sums==13]=NA
})
结果如下所示:
如果要修改数据框中已有的数据和变量名,可以使用fix()函数,该函数可以调用文本编辑器然后使用键盘来对数据框进行修改,如下所示:
使用names()函数可以调用或重新赋值变量名,如下所示:
②数据融合与删除
横向合并两个数据框,需要使用merge()函数,这时候会自动识别行名字并一一对应。如果仅仅是合并数据(不关心行、列的对应情况或者确定行、列正好对应),可以使用函数cbind()和函数rbind()来横向、纵向合并数据框或者矩阵、向量。
⑵特殊值
①缺失值
在实际研究中,缺失值是难以避免的(不能将缺失值NA当做0来对待),可以使用函数is.na()来判断是否存在缺失值,该函数可以作用于向量、矩阵、数据框等对象,返回值为对应的逻辑值,如下所示:
缺失值是无法进行比较运算的,很多函数都有参数na.rm选项来移除缺失值,如下所示:
可以使用函数na.omit()来移除变量中缺失值或矩阵、数据框含有缺失值的行,如下所示:
②日期值
在R中,日期往往以数值形式存储,日期值可以运算比较,但是在读取数据时往往读取为字符串格式,as.Date()函数可以将字符型日期转换为数值型进行储存,如下所示:
可以看到在R中日期值是以yyyy-mm-dd形式储存。在这里R可以识别yyyy-mm-dd和yyyy/mm/dd格式的日期数据。
函数difftime()可以用来计算时间间隔,还可以自定义显示单位(周、天、时、分、秒),如下所示:
函数Sys.Date()可以返回当前日期,如下所示:
⑶数据标准化
在数据分析之前,我们往往要根据分析方法的需要对数据进行各种预处理,也即数据标准化。数据标准化的目的是使数据总体的参数符合某种要求(具体可参见1.4.3概率统计)。
简单数据转换也即对整体数据