书中有一句:数据分析多大60%以上花在实际分析前数据的准备上。
简直不能同意更多。
继续学习第四章的内容。
4.2创建新变量
先创建一个数据框,然后想在数据框内添加新的变量,可采用三种方法:
mydata1<-data.frame(x1=c(2,2,6,4),
x2=c(3,4,2,8))
方法1
mydata1$sum<-mydata1$x1+mydata1$x2
mydata1$mean<-(mydata1$x1+mydata1$x2)/2
mydata1
方法2
attach(mydata1)
mydata1$sum<-x1+x2
mydata1$mean<-(x1+x2)/2
detach(mydata1)
方法3
mydata1<-transform(mydata1,
sum=x1+x2,
mean=(x1+x2)/2)
建议采用第三种方法。
4.3变量的重编码
将误编码的值替换为正确值
variable[condition]<-expression
仅在condition的值为TRUE时执行赋值。
leadership$age[leadership$age == 99]<-NA #将99岁的年龄之重编码为缺失值。
将一个连续性变量修改为一组类别值
leadership$agecat[leadership$age>75]<-"Elder" #创建新的变量
或者使用以下代码更为紧凑
leadership<-within(leadership,{
agecat<-NA
agecat[age>75]<-"Elder"
agecat[age>=55 &age<=75]<-"Middle aged"
agecat[age<55]<-"Young"
})
4.4变量的重命名
fix(leadership)#调用交互式的编辑器,修改变量名
names(leadership)[2]<-"testDate" #修改第二列的列名
4.5缺失值
y<-c(1,2,3,NA)
is.na(y) #该函数可用于检测缺失值是否存在
以上将会返回FALSE FALSE FALSE TRUE
注意:
缺失值是不可比较的
R中并不把无限的或者不可能出现的数值标记成缺失值
正无穷用Inf,负无穷用-Inf标记,不可能的值用NaN,识别这些数值,可用is.infinite()或者is.nan().
x<-c(1,2,NA,3)
y<-sum(x,na.rm=TRUE) #很多函数都含有na.rm=TRUE这个选项,可以排除缺失值
注意在使用函数处理不完整的数据时,务必查阅它们的帮助文档(?sum),检查这些函数师傅和处理缺失数据的。
na.omit()可以移除所有含有缺失值的行!