如何选择非NA的R数据帧的行?
要选择非Na的R数据帧的行,我们可以使用complete.cases带有单个方括号的函数。例如,如果我们有一个包含一些缺失值(NA)的数据框,那么可以使用命令df[,]来选择非NA的行。complete.cases(df)
示例1
考虑以下数据框-
> x1<-sample(c(1,NA),20,replace=TRUE) > x2<-sample(c(5,NA),20,replace=TRUE) > x3<-sample(c(3,NA),20,replace=TRUE) > df1<-data.frame(x1,x2,x3) > df1输出结果
x1 x2 x3 1 1 NA NA 2 NA 5 3 3 1 5 NA 4 1 NA NA 5 NA 5 NA 6 NA 5 3 7 NA 5 NA 8 1 NA 3 9 NA 5 NA 10 NA 5 NA 11 NA NA NA 12 1 5 3 13 NA 5 3 14 NA NA NA 15 1 NA NA 16 NA 5 3 17 NA NA 3 18 NA NA NA 19 1 NA 3 20 NA NA 3
选择不包含任何NA的df1行-
> df1[complete.cases(df1),]输出结果
x1 x2 x3 12 1 5 3
例2
> y1<-sample(c(rnorm(2),NA),20,replace=TRUE) > y2<-sample(c(rnorm(2),NA),20,replace=TRUE) > df2<-data.frame(y1,y2) > df2输出结果
y1 y2 1 0.15079115 -0.626630 2 0.15079115 NA 3 NA -0.626630 4 0.15079115 -0.626630 5 0.15079115 NA 6 0.15079115 -0.626630 7 0.15079115 NA 8 0.15079115 -1.691553 9 NA -1.691553 10 NA -0.626630 11 0.15079115 -1.691553 12 0.15079115 NA 13 NA -1.691553 14 NA -1.691553 15 0.15079115 -1.691553 16 NA -0.626630 17 0.01495388 -0.626630 18 0.01495388 -1.691553 19 0.15079115 -1.691553 20 NA NA
选择不包含任何NA的df2行-
> df2[complete.cases(df2),]输出结果
y1 y2 1 0.15079115 -0.626630 4 0.15079115 -0.626630 6 0.15079115 -0.626630 8 0.15079115 -1.691553 11 0.15079115 -1.691553 15 0.15079115 -1.691553 17 0.01495388 -0.626630 18 0.01495388 -1.691553 19 0.15079115 -1.691553
例3
> z1<-sample(c("A",NA),20,replace=TRUE) > z2<-sample(c("B",NA),20,replace=TRUE) > z3<-sample(c("C",NA),20,replace=TRUE) > df3<-data.frame(z1,z2,z3) > df3输出结果
z1 z2 z3 1 AC 2 B C 3 4 A B 5 C 6 A C 7 A B C 8 B C 9 C 10 C 11 A C 12 C 13 A B C 14 A B C 15 16 A B C 17 18 C 19 A B C 20
选择不包含任何NA的df3行-
> df3[complete.cases(df3),]输出结果
z1 z2 z3 7 A B C 13 A B C 14 A B C 16 A B C 19 A B C