如何在 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+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.