如何选取 R 数据帧中非 NA 的行?
为了选取 R 数据帧中非 Na 的行,我们可以使用 complete.cases 函数和方括号。例如,如果我们有一个名为包含一些缺失值 (NA) 的数据帧,那么可以通过使用命令 df[complete.cases(df),] 来选取非 NA 的行。
示例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),]
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
输出
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 A <NA> C 2 <NA> B C 3 <NA> <NA> <NA> 4 A B <NA> 5 <NA> <NA> C 6 A <NA> C 7 A B C 8 <NA> B C 9 <NA> <NA> C 10 <NA> <NA> C 11 A <NA> C 12 <NA> <NA> C 13 A B C 14 A B C 15 <NA> <NA> <NA> 16 A B C 17 <NA> <NA> <NA> 18 <NA> <NA> C 19 A B C 20 <NA> <NA> <NA>
选择不包含任何 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
广告