如何在 R 中刪除包含 NA 的 data.table 物件中的行?


如果一行包含缺失值,它們的和將不是有限的,因此,我們可以將 is.finite 函式與 data.table 物件一起使用,以刪除包含 NA 的行。例如,如果我們有一個名為 DT 的 data.table 物件,其中包含一些帶有 NA 的行,那麼我們可以使用 DT[is.finite(rowSums(DT))] 刪除這些行。

示例 1

載入 data.table 包並建立一個 data.table 物件 −

> library(data.table)
> x1<-sample(c(1,NA),20,replace=TRUE)
> x2<-rpois(20,5)
> DT1<-data.table(x1,x2)
> DT1

輸出

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

從 DT1 中刪除包含 NA 的行 −

> DT1[is.finite(rowSums(DT1))]

輸出

   x1 x2
1:  1  2
2:  1  2
3:  1  6
4:  1  8
5:  1  5
6:  1  6
7:  1  6
8:  1  4
9:  1  4
10: 1  5
11: 1  8
12: 1  5

示例 2

> y1<-sample(c(5,NA),20,replace=TRUE)
> y2<-rnorm(20)
> DT2<-data.table(y1,y2)
> DT2

輸出

   y1      y2
1: NA  -0.1011854033
2: NA   0.0852494741
3: 5   -3.0690178687
4: NA  -0.2443067757
5: NA  -1.7802490517
6: 5   -0.8969211846
7: 5   -0.0414789991
8: 5    1.7043093000
9: 5   -0.2734151106
10: 5   0.5297258605
11: 5  -0.3614407993
12: 5   0.4282377599
13: 5  -0.9532251956
14: 5  -2.6958281110
15: 5  -0.5990272270
16: 5   0.3634742009
17: NA  0.2436549088
18: NA -0.0004956819
19: 5   0.8576350551
20: 5  -0.5816740589

從 DT2 中刪除包含 NA 的行 −

> DT2[is.finite(rowSums(DT2))]

輸出

   y1   y2
1: 5  -3.0690179
2: 5  -0.8969212
3: 5  -0.0414790
4: 5   1.7043093
5: 5  -0.2734151
6: 5   0.5297259
7: 5  -0.3614408
8: 5   0.4282378
9: 5  -0.9532252
10: 5 -2.6958281
11: 5 -0.5990272
12: 5  0.3634742
13: 5  0.8576351
14: 5 -0.5816741

更新於:04-Mar-2021

2 千次檢視

開啟你的 職業生涯

完成課程並獲得認證

開始
廣告
© . All rights reserved.