R 如何将数据帧中的NAN转换为NAs

R 如何将数据帧中的NAN转换为NAs,r,dataframe,apply,nan,na,R,Dataframe,Apply,Nan,Na,我希望也担心这只是一个简单的答案,我为不得不问这个问题而感到尴尬: 使用Reforme2转换数据帧后,我得到了一个大数据帧,其第一行如下所示: ukgridcode x y year pm10 pm2.5 no2 nox co so2 ozone benzene 1 56361 460500 1218500 2001 8.583796 NaN 2.375508 3.031918 NaN NaN NaN NaN 2

我希望也担心这只是一个简单的答案,我为不得不问这个问题而感到尴尬:

使用Reforme2转换数据帧后,我得到了一个大数据帧,其第一行如下所示:

  ukgridcode      x       y year     pm10 pm2.5      no2      nox  co so2 ozone benzene
1      56361 460500 1218500 2001 8.583796   NaN 2.375508 3.031918 NaN NaN   NaN     NaN
2      57051 460500 1217500 2001 8.584764   NaN 2.368387 3.022830 NaN NaN   NaN     NaN
3      57052 461500 1217500 2001 8.587392   NaN 2.383438 3.042039 NaN NaN   NaN     NaN
4      57054 463500 1217500 2001 8.590163   NaN 2.455386 3.133869 NaN NaN   NaN     NaN
5      57741 460500 1216500 2001 8.588822   NaN 2.375839 3.032340 NaN NaN   NaN     NaN
6      57742 461500 1216500 2001 8.592360   NaN 2.394949 3.056732 NaN NaN   NaN     NaN
我想将每个NAN转换为NAs。到目前为止,我已经尝试:

d2 <- d[is.nan(d)] <- NA
d2 <- d[!is.finite(d)] <- NA
d2 <- apply(d, 2, function (x) x[is.nan(x)] <- NA) # also tried row-wise (1)
d2试试看

或者只需查看@Rolands comment

,您可以尝试:

 is.nan(d$pm2.5)
 #[1] TRUE TRUE TRUE TRUE TRUE TRUE

 d[d=="NaN"] <- NA
 d
 #    ukgridcode      x       y year     pm10 pm2.5      no2      nox co so2 ozone
 #1      56361 460500 1218500 2001 8.583796    NA 2.375508 3.031918 NA  NA    NA
 #2      57051 460500 1217500 2001 8.584764    NA 2.368387 3.022830 NA  NA    NA
 #3      57052 461500 1217500 2001 8.587392    NA 2.383438 3.042039 NA  NA    NA
 #4      57054 463500 1217500 2001 8.590163    NA 2.455386 3.133869 NA  NA    NA
 #5      57741 460500 1216500 2001 8.588822    NA 2.375839 3.032340 NA  NA    NA
 #6      57742 461500 1216500 2001 8.592360    NA 2.394949 3.056732 NA  NA    NA
 #  benzene
 #1      NA
 #2      NA
 #3      NA
 #4      NA
 #5      NA
 #6      NA
is.nan(d$pm2.5)
#[1] 真的真的真的真的

d[d==“NaN”]如果数据帧作为csv文件提供,那么regex find NaN replace with NA将在带有正则表达式的文本编辑器中工作(例如,在记事本++)

d[is.NA(d)]为什么不使用
dcast的
fill
参数?谢谢。我仍在学习Wickhamese,并将查看fill参数。下面的答案似乎对现在有用。。。我不知道你能用
NaN
做到这一点。我认为它不会像
d[d==“NA”]
NA
那样工作,是一种非常奇怪的生物。它的类是
logical
NA==“NA”
返回
NA
,而
TRUE
(哪个类也是
logical
)工作
TRUE==“TRUE”
返回
TRUE
是的,类(NaN)#[1]“numeric”,但d==NaN不起作用是的,我知道类(NaN)
数字的
这就是为什么将
NA
TRUE
进行比较的原因:)
library(data.table)
setDT(d)[, lapply(.SD, function(x) ifelse(is.nan(x), NA, x))]
 is.nan(d$pm2.5)
 #[1] TRUE TRUE TRUE TRUE TRUE TRUE

 d[d=="NaN"] <- NA
 d
 #    ukgridcode      x       y year     pm10 pm2.5      no2      nox co so2 ozone
 #1      56361 460500 1218500 2001 8.583796    NA 2.375508 3.031918 NA  NA    NA
 #2      57051 460500 1217500 2001 8.584764    NA 2.368387 3.022830 NA  NA    NA
 #3      57052 461500 1217500 2001 8.587392    NA 2.383438 3.042039 NA  NA    NA
 #4      57054 463500 1217500 2001 8.590163    NA 2.455386 3.133869 NA  NA    NA
 #5      57741 460500 1216500 2001 8.588822    NA 2.375839 3.032340 NA  NA    NA
 #6      57742 461500 1216500 2001 8.592360    NA 2.394949 3.056732 NA  NA    NA
 #  benzene
 #1      NA
 #2      NA
 #3      NA
 #4      NA
 #5      NA
 #6      NA
d[is.na(d)]<-NA