我尝试NaN使用以下脚本用零替换值:
rapply( data123, f=function(x) ifelse(is.nan(x),0,x), how="replace" )
# [31] 0.00000000 -0.67994832 0.50287454 0.63979527 1.48410571 -2.90402836
Run Code Online (Sandbox Code Playgroud)
NaN值显示为零,但是当我输入数据框的名称并尝试查看它时,该值仍然保持为NaN.
data123$contri_us
# [31] NaN -0.67994832 0.50287454 0.63979527 1.48410571 -2.90402836
Run Code Online (Sandbox Code Playgroud)
我不确定该rapply命令是否实际应用了数据框中的调整,或者只是替换了所示的值.
知道如何将NaN值实际更改为零吗?
在dplyr链中替换NA的问题导致解决方案
dt %.% group_by(a) %.% mutate(b = ifelse(is.na(b), mean(b, na.rm = T), b))
Run Code Online (Sandbox Code Playgroud)
与dplyr.我想用dplyr链来估算所有colums.没有单个列可以分组,而是我希望所有数字列都通过诸如列均值之类的方式替换所有NAs.
使用tidyverse/dp用列方法替换所有NA的最优雅方法是什么?
在dplyr中,我可以使用以下代码将NA替换为0.问题是这会在我的数据框中插入一个列表,这会阻碍进一步的分析.我甚至不了解列表或原子向量或其中任何一个.我只想选择某些列,并将所有出现的NA替换为零.并保持列整数状态.
library(dplyr)
df <- tibble(x = c(1, 2, NA), y = c("a", NA, "b"), z = list(1:5, NULL, 10:20))
df
df %>% replace_na(list(x = 0, y = "unknown"))
Run Code Online (Sandbox Code Playgroud)
这有效但将列转换为列表.如何在不将列转换为列表的情况下执行此操作?
以下是如何在基础R中执行此操作.但不确定如何将其用于mutate语句:
df$x[is.na(df$x)] <- 0
Run Code Online (Sandbox Code Playgroud) 我有一个包含NaN的数据框,我想将其转换为0.我写了一个我觉得应该工作的函数:
fix_nan <- function(x){
return(x[is.nan(x)] <- 0)
}
Run Code Online (Sandbox Code Playgroud)
然后我将它应用于数据框:
train_e <- structure(list(pack_id = structure(1:10, .Label = c("1", "2",
"4", "5", "7", "8", "9", "10", "11", "14"), class = "factor"),
item_1 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), item_2 = c(NaN,
NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN), item_3 = c(1.45225232891169,
0.613104472886409, NaN, 1.02450431651439, 0.735706794978741,
0.741937344729377, NaN, 0.83034830207343, 0.97650959186721,
0.750305594399894), item_4 = c(0.645137961373585, 0.615792803650477,
Inf, 0.752866415261568, 0.84901755126673, 0.646398200985872,
Inf, 0.786548355648346, 0.725113372622438, 0.709897990984761
), item_5 = …Run Code Online (Sandbox Code Playgroud)