如何在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