如何在R数据帧中将NaN值转换为NA?

要将NaN值转换为NA,我们需要检测数据帧中的NaN值并将其设置为NA。例如,如果我们有一个名为df的数据框,其中包含具有某些NaN值的x列,则可以使用命令df $x [is.nan(df $x)] <-NA将那些NaN转换为NA

例1

考虑以下数据帧-

> x1<-sample(c(1,NaN),20,replace=TRUE)
> x2<-rnorm(20)
> df1<-data.frame(x1,x2)
> df1
输出结果
x1 x2
1 NaN -0.44923302
2 NaN -0.12670027
3 1 0.59120380
4 1 -0.18782341
5 NaN -0.28730385
6 1 0.57412261
7 NaN -0.33620181
8 1 1.37168545
9 NaN -2.24121448
10 NaN 1.05990104
11 1 1.95544957
12 NaN -2.19544854
13 1 -0.94131203
14 1 -0.37307028
15 NaN 1.21659101
16 1 -0.03788952
17 1 -0.16122552
18 1 0.90254474
19 1 -0.73196835
20 NaN -0.28462669

将x1中的NaN转换为NA-

> df1$x1[is.nan(df1$x1)]<-NA
> df1
输出结果
x1 x2
1 NA -0.44923302
2 NA -0.12670027
3 1 0.59120380
4 1 -0.18782341
5 NA -0.28730385
6 1 0.57412261
7 NA -0.33620181
8 1 1.37168545
9 NA -2.24121448
10 NA 1.05990104
11 1 1.95544957
12 NA -2.19544854
13 1 -0.94131203
14 1 -0.37307028
15 NA 1.21659101
16 1 -0.03788952
17 1 -0.16122552
18 1 0.90254474
19 1 -0.73196835
20 NA -0.28462669

例2

> y1<-sample(c(5,NaN),20,replace=TRUE)
> y2<-rpois(20,5)
> df2<-data.frame(y1,y2)
> df2
输出结果
y1 y2
1 NaN 7
2 NaN 5
3 NaN 3
4 5 4
5 5 4
6 5 4
7 5 4
8 NaN 4
9 5 5
10 NaN 5
11 5 5
12 5 2
13 5 9
14 5 3
15 NaN 6
16 NaN 8
17 5 5
18 5 7
19 NaN 4
20 NaN 8

将y1中的NaN转换为NA-

> df2$y1[is.nan(df2$y1)]<-NA
> df2
输出结果
y1 y2
1 NA 7
2 NA 5
3 NA 3
4 5 4
5 5 4
6 5 4
7 5 4
8 NA 4
9 5 5
10 NA 5
11 5 5
12 5 2
13 5 9
14 5 3
15 NA 6
16 NA 8
17 5 5
18 5 7
19 NA 4
20 NA 8