使用dplyr将NaN替换为0的R语言操作

4

我的数据框长这样 -

dataset = data.frame(ID=c(1:3),Count=c(22,NaN,13))

我尝试使用管道运算符将NaN替换为0。
dataset = dataset %>% replace('NaN',0)

但是这不起作用。 我已经查看了这些网站上的解决方案,但都无法解决问题。 非常感谢您提供任何帮助。

11
数据集 %>% 在Count变量上使用mutate_at函数,通过 ~replace(., is.nan(.), 0) 将其中的缺失值替换为0。 - Ronak Shah
12
dataset[is.na(dataset)] <- 0 这行代码可以直接使用,不需要使用 dplyr 包进行处理。它的作用是将数据集中的缺失值(NA)替换为0。 - jay.sf
2
我认为这个问题不是第一个和第二个链接的重复,因为在R中NAs与NaNs是不同的。对于第三个和第四个链接,可能是重复的,但是这个问题中要求特定的包dplyr。然而,NaNs通常是由于不可能的计算(如0/0和负数的sqrt或log)产生的。因此,最好的方法是在产生NaN之前先纠正代码来消除它们。 - LuizZ
1
mutate_at已被取代。@RonakShah的答案更新版本为:dataset%>% mutate(across(Count,〜replace(。,is.nan(.),0))) - Earlien
1
dataset |> mutate(across(everything(), ~replace_na(., 0))) - kraggle
显示剩余2条评论
1个回答

5
这样就可以了,而且不需要使用dplyr,因为它是基于基础功能的。
dataset$Count[is.nan(dataset$Count)]<-0

我尝试着做这个,但是出现了一个错误,显示Error in is.nan(df) : default method not implemented for type list。你知道问题是什么或者如何解决吗? - user20203146
我们需要查看您的数据才能确定,但我注意到您正在命名整个数据框,而不是其中的变量。(请注意示例中引用了dataset$Count,而不仅仅是dataset)。is.nan专门用于数值变量(因此使用"nan"而不是"na"),因此无法应用于非数值变量。根据快速搜索的结果,我猜测(df)可能是一个变量或列表,而不是数据框,或者数据框(df)中存在非数值变量。 - DanM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接