如何在 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP