如何移除包含至少一个 NaN 的 R 数据帧中的行?
NA 值和 NaN 值在本质上差异很大,因此,移除包含 NA 值的行与移除包含 NaN 值的行不同。例如,如果我们有一个包含 NaN 值的数据帧,则可以通过使用 is.finite 函数来移除行,如以下示例所示。
考虑以下数据帧 −
示例
x1<-sample(c(NaN,rpois(4,5)),20,replace=TRUE) x2<-sample(c(NaN,rpois(4,5)),20,replace=TRUE) df1<-data.frame(x1,x2) df1
输出
x1 x2 1 2 2 2 2 3 3 0 6 4 2 3 5 2 2 6 8 NaN 7 2 3 8 8 NaN 9 2 2 10 NaN 2 11 2 2 12 NaN 6 13 8 6 14 NaN 3 15 NaN 6 16 NaN NaN 17 8 NaN 18 8 2 19 NaN 3 20 NaN 3
从 df1 中移除包含 NaN 值的行 −
df1[is.finite(df1$x1) & is.finite(df1$x2),]
x1 x2 1 2 2 2 2 3 3 0 6 4 2 3 5 2 2 7 2 3 9 2 2 11 2 2 13 8 6 18 8 2
示例
y1<-sample(c(NaN,rnorm(2)),20,replace=TRUE) y2<-sample(c(NaN,rnorm(2)),20,replace=TRUE) y3<-sample(c(NaN,rnorm(2)),20,replace=TRUE) df2<-data.frame(y1,y2,y3) df2
输出
y1 y2 y3 1 NaN 0.3324506 -0.5461648 2 0.3319275 -0.3103766 -0.5461648 3 1.5624962 0.3324506 -0.3322423 4 NaN -0.3103766 -0.3322423 5 1.5624962 NaN NaN 6 NaN -0.3103766 -0.3322423 7 1.5624962 0.3324506 NaN 8 0.3319275 -0.3103766 -0.3322423 9 NaN -0.3103766 -0.3322423 10 1.5624962 NaN NaN 11 0.3319275 NaN NaN 12 1.5624962 0.3324506 -0.3322423 13 1.5624962 NaN NaN 14 NaN 0.3324506 NaN 15 1.5624962 0.3324506 -0.5461648 16 1.5624962 -0.3103766 -0.3322423 17 NaN 0.3324506 -0.5461648 18 NaN 0.3324506 -0.3322423 19 0.3319275 -0.3103766 -0.5461648 20 0.3319275 NaN -0.3322423
从 df2 中移除包含 NaN 值的行 −
df2[is.finite(df2$y1) & is.finite(df2$y2) & is.finite(df2$y3),]
y1 y2 y3 2 0.3319275 -0.3103766 -0.5461648 3 1.5624962 0.3324506 -0.3322423 8 0.3319275 -0.3103766 -0.3322423 12 1.5624962 0.3324506 -0.3322423 15 1.5624962 0.3324506 -0.5461648 16 1.5624962 -0.3103766 -0.3322423 19 0.3319275 -0.3103766 -0.5461648
广告