如何选取 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

更新于: 06-Mar-2021

9K+ 浏览

开启您的职业生涯

完成课程以获得认证

开始
广告