读书会是一种在于拓展视野、宏观思维、知识交流、提升生活的活动。PPV课R语言读书会以“学习、分享、进步”为宗旨,通过成员协作完成R语言专业书籍的精读和分享,达到学习和研究R语言的目的。读书会由辅导老师或者读书会成员推荐书籍,经过讨论确定要读的书,每个月读一本书且要精读,大家一起分享。
第四章 基本数据管理
本章概要
1操作数据和缺失值。
2明白数据类型转换
3创建和重命名变量
4排序、合并和子数据集
5选择和删除变量
本章所介绍内容概括如下。
把数据导入矩阵或者数据框仅是数据分析准备的第一步,花在数据分析的60%的时间用在为分析所做的数据准备。
一个工作例子
案例:研究男女管理者领导他们组织的差异。
数据集(数值5、4、3、2和1分别表示强烈反对、反对、中立、支持、强烈支持)如图1所示。
图1:不同性别的领导行为
如何把图1的中数据导入R,对这些数据,我们有什么发现呢?
创建新的变量
一些场景,我们需要创建新的变量,形式如下:
newvariable <- expression
算术运算如图2所示。
图2: R 算术运算符号
举例说明如下
> rm(list=ls())
> 10+3
[1] 13
> 10-3
[1] 7
> 10*3
[1] 30
> 10/3
[1] 3.333333
> 10^3
[1] 1000
> 10**3
[1] 1000
> 10%%3
[1] 1
> 10%/%3
[1] 3
在数据框中加入新变量有三种方法,举例说明如下。
方法一:
> rm(list=ls())
> mydata<-data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8))
> mydata$sumx <- mydata$x1 + mydata$x2
> mydata$meanx <- (mydata$x1 + mydata$x2)/2
> mydata
x1 x2 sumx meanx
1 2 3 5 2.5
2 2 4 6 3.0
3 6 2 8 4.0
4 4 8 12 6.0
方法二:
> rm(list=ls())
> mydata<-data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8))
> attach(mydata)
> mydata$sumx <- x1 + x2
> mydata$meanx <- (x1 + x2)/2
> detach(mydata)
> mydata
x1 x2 sumx meanx
1 2 3 5 2.5
2 2 4 6 3.0
3 6 2 8 4.0
4 4 8 12 6.0
方法三:
> rm(list=ls())
> mydata<-data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8))
> mydata<-transform(mydata, sumx=x1+x2, meanx=(x1+x2)/2)
> mydata
x1 x2 sumx meanx
1 2 3 5 2.5
2 2 4 6 3.0
3 6 2 8 4.0
4 4 8 12 6.0
重编码变量
R逻辑运算符号如图3所示。
图3:R逻辑运算符号
基于逻辑运算符号关系来改变变量中内容,逻辑值为真,则可以修改。
拓展可以了解within()函数和car包中的recode()函数。
重命名变量
重命名变量名,可以采用方法。
方法一:fix()函数。
方法二:包reshape中的rename()函数。
方法三:names()函数。
缺失值
数据集往往是不完整,因为各种缘由存有缺失值。
使用is.na()函数检查缺失值。
> rm(list=ls())
> x <- c(1,2,NA,3)
> is.na(x)
[1] FALSE FALSE TRUE FALSE
数据集中某些变量值 设置为NA
从数据 集中移除缺失值
> rm(list=ls())
> x <- c(1, 2, NA, 3)
> y <- sum(x, na.rm=TRUE)
> x
[1] 1 2 NA 3
> y
[1] 6
> sum(x)
[1] NA
可以使用na.omit()函数删除不完整的观察。
日期值
用函数as.Date()设置日期格式。
日期常用格式如下
%d 1-31
%a Mon
%A Monday
%m 00-12
%b Jan
%B January
%y 14
%Y 2014
> today <- Sys.Date()
> today
[1] “2014-06-17″
> format(today, format=”%B %d %Y”)
[1] “六月 17 2014″
> today <- Sys.Date()
> dob <- as.Date(“1984-11-03″)
> difftime(today, dob, units=”days”)
Time difference of 10818 days
类型转换
类型转换函数如图4所示:
图4:R类型转换函数
> rm(list=ls())
> a <- c(1,2,3)
> a
[1] 1 2 3
> is.numeric(a)
[1] TRUE
> is.vector(a)
[1] TRUE
> is.factor(a)
[1] FALSE
> a <- as.character(a)
> a
[1] “1″ “2″ “3″
> is.numeric(a)
[1] FALSE
> is.character(a)
[1] TRUE
有序数据
使用order()函数
数据集合并
添加列,使用merge()函数或者cbind()
添加行,使用rbind()函数
子数据集
选择变量
移除变量
选择观察
用subset()函数
随机抽样sample()函数
用SQL操作数据框
使用包sqldf中的sqldf()函数基于SQl的查询语句操作数据框。
总结
1操作数据和缺失值。
2明白数据类型转换
3创建和重命名变量
4排序、合并和子数据集
5选择和删除变量
Resource:
1 http://www.wangluqing.com/2014/06/r-in-action-note5/
2 《R in action》第一部分第四章
本栏目文章由PPV课R语言读书会提供,转载请注明来自PPV课R语言读书会。
版权所有,违者必究!