如何在 R 中选择没有缺失值的列?


有两种简单的方法可以选择 R 数据框中没有缺失值的列,第一种方法得到一个向量,另一种方法返回一个矩阵。例如,如果我们有一个名为 df 的数据框,则第一种方法可以用作 df[,colSums(is.na(df))==0],第二种方法将用作 t(na.omit(t(df)))。

示例

考虑以下数据框 -

 在线演示

df1<-data.frame(x1=sample(c(NA,5),20,replace=TRUE),x2=rpois(20,5))
df1

输出

   x1   x2
1  NA  10
2   5   3
3  NA   6
4  NA   9
5  NA   2
6   5   1
7  NA   3
8  NA   4
9  NA   4
10  5   0
11 NA   4
12 NA   1
13  5   7
14  5   6
15 NA   4
16  5   7
17  5   8
18 NA   1
19 NA   5
20  5   5

使用第一种方法选择 df1 中不包含缺失值的列 -

示例

df1[ , colSums(is.na(df1)) == 0]

输出

[1] 10 3 6 9 2 1 3 4 4 0 4 1 7 6 4 7 8 1 5 5

使用第二种方法选择 df1 中不包含缺失值的列 -

示例

t(na.omit(t(df1)))

输出

       x2
[1,]  10
[2,]   3
[3,]   6
[4,]   9
[5,]   2
[6,]   1
[7,]   3
[8,]   4
[9,]   4
[10,]  0
[11,]  4
[12,]  1
[13,]  7
[14,]  6
[15,]  4
[16,]  7
[17,]  8
[18,]  1
[19,]  5
[20,]  5


attr(,"na.action")
x1
1
attr(,"class")
[1] "omit"

示例

 在线演示

df2<-data.frame(y1=sample(c(NA,2),20,replace=TRUE),y2=rnorm(20,5,0.23))
df2

输出

    y1     y2
1  NA   4.926885
2  NA   4.880143
3   2   4.999657
4   2   5.101575
5  NA   4.778465
6  NA   4.534625
7  NA   5.341219
8   2   5.462156
9   2   4.553130
10 NA   5.282899
11 NA   4.884406
12 NA   4.960496
13  2   4.913396
14 NA   4.780874
15 NA   5.222774
16  2   5.007299
17 NA   4.900481
18  2   4.839670
19  2   5.107357
20 NA   4.874243

使用第二种方法选择 df2 中不包含缺失值的列 -

示例

t(na.omit(t(df2)))

输出

       y2
[1,]  4.926885
[2,]  4.880143
[3,]  4.999657
[4,]  5.101575
[5,]  4.778465
[6,]  4.534625
[7,]  5.341219
[8,]  5.462156
[9,]  4.553130
[10,] 5.282899
[11,] 4.884406
[12,] 4.960496
[13,] 4.913396
[14,] 4.780874
[15,] 5.222774
[16,] 5.007299
[17,] 4.900481
[18,] 4.839670
[19,] 5.107357
[20,] 4.874243


attr(,"na.action")
y1
1
attr(,"class")
[1] "omit"

更新于: 2021-03-16

2K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告