数据预处理
R语言处理的数据多以数据框的形式出现。
预备操作
- > dim(x)
- [1] 16 3 #数据框有16行3列
- > names(x) #查看数据框的变量名
- [1] "X" "Z" "Y"
- > head(x,3) #查看前3行,若为-3则是查看后三行之外的数据
- X Z Y
- 1 140.1 37.0 2.25
- 2 151.5 38.5 3.00
- 3 161.2 42.1 3.25
- > tail(x,3) #查看后3行,若为-3则是查看前3行之外的数据
- X Z Y
- 14 149.5 39.7 2.75
- 15 159.6 44.5 3.00
- 16 162.5 45.0 3.20
读取数据后可用attach载入数据框,即attach(x),由此可直接用列名,而不需再用$引用
- Which( )函数
- > a=c(2,3,4,2,5,1,6,3,2,5,8,5,7,3)
- > which.max(a) #表示a序列中第几个是最大
- [1] 11
- > which.min(a)
- [1] 6
- > a[which.max(a)] #先算里面的函数
- [1] 8
- > which(a==2) #求哪些元素等于2
- [1] 1 4 9
- > a[which(a==2)]
- [1] 2 2 2
- > which(a>5)
- [1] 7 11 13
- > a[which(a>5)]
- [1] 6 8 7
- x<-read.table("li14.3.txt",header=T)
- x$gender[which(x$gender=="f")]="女"
- > y <- c(7,7,15,11,9,12,17,12,18,18,14,18,18,
- + 19,19,19,25,22,19,23,7,10,11,15,11)
- > n <- factor(rep(c("15%","20%","25%","30%","35%"),each=5))
- > d <- data.frame(y,n)
- > which(d[,2]=="15%") #求出第多少行满足条件
- [1] 1 2 3 4 5
- > mean(d[which(d[,2]=="15%"),1]) # 对数据框1-5行第1列求均值
- [1] 9.8
-
修改变量名
- > names(x)
- [1] "X" "Z" "Y"
- > names(x)<-paste("x",1:3,sep="") #由此变量名全部修改
- > names(x)
- [1] "x1" "x2" "x3"
- > names(x)[3]<-"产量" #把第3列的变量名修改为"成绩"
- > names(x)
- [1] "x1" "x2" "成绩"
删除变量
给该变量赋予空值NULL即可,(指从数据集中删除)
ug$GPA<-NULL
排序
- > x[order(x$成绩),] #按成绩升序排列(默认)
- x1 x2 成绩
- 1 140.1 37.0 2.25
- 8 157.0 37.0 2.25
- > x[order(x$成绩,decreasing=T),] #按成绩降序排列
- x1 x2 成绩
- 7 170.5 54.5 3.50
- 3 161.2 42.1 3.25
缺失值处理
- > x$x2[3]<-NA
- > is.na(head(x$x2,3))
- [1] FALSE FALSE TRUE
- > x_NA<-na.omit(x) #把缺失值所在行排除
- > x_NA
- x1 x2 成绩
- 1 140.1 37.0 2.25
- 2 151.5 38.5 3.00
- 4 172.8 46.5 3.25