如何移除包含至少一个 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

更新于: 08-Feb-2021

332 人浏览

开启您的 职业

完成课程即可获得认证

开始
广告