一 数据的筛选与处理
1 添加新的一列,把连续型变量(如身高)转化为类别型变量
data$height[data$height>=3]<-NA #把异常值重新编码为缺失值
data<-within(data,{
heightcat<-NA
heightcat[height>1.8]<-"taller"
heightcat[height>=1.6&height<=1.8]<-"middle"
heightcat[height<1.6]<-"shorter"}) #创建一个类别型变量给身高数据归类
#注意这里heightcat只是一个字符型变量,而不是一个有序型因子
#注意within的用法,可以修改数据框
2 变量的重命名
#method 1
fix(data) #交互修改
#method 2
names(data)[i]<-"newname"
#method 3
library(plyr)
rename(data,c(oldname="newname",oldname="newname"))
3 缺失值处理
is.na(data[,1:5]) #识别缺失值
na.omit(data) #移除所有含有缺失值的观测(即删除行)
#原始数据中a<=0,b<=0,c<=0则表示缺失,用于删除含缺失值的行
data<-read.csv("d:/data.csv",header=T,sep=",")
attach(data)
index=a>0&b>0&c>0
data<-data[index,]
4 数据集取子集
newdata<-data[,6:10] #直接挑选变量
newdata<-data[c(-1,-2)] #删除第一个和第二个变量,等价于data$var1<-data$var2<-NULL
# 选择观测
newdata<-data[1:3,] #直接选择行
newdata<-data[data$heightcat=="taller"&data$height>1.5,] #使用attach函数就不用加美金符号
#subsset函数
newdata<-subset(data,height>=1.7|height<1.5,select=c(height,heightcat))
newdata<-subset(data,heightcat=="taller",select=height:heightcat)