如何移除包含至少一個 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
廣告
資料結構
網路構建
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP