如何使用 R 中的 NA 删除 data.table 对象中的行?

如果一行包含缺失值,那么它们的总和将不是有限的,因此,我们可以is.finite对data.table对象使用函数来删除带有 NA 的行。例如,如果我们有一个data.table名为 DT的对象,其中包含一些带有 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

以上是 如何使用 R 中的 NA 删除 data.table 对象中的行? 的全部内容, 来源链接: utcz.com/z/331823.html

回到顶部