用 0s 随机替换 dataframe 列中的 1000 个 NA 值,而不覆盖 1s
Replace randomly 1000 NA Values in a dataframe column with 0s, without overwriting 1s
我正在尝试用 0 随机替换数据框列中的 1000 个 NA 值。该列仅由 NA 和 1 组成,看起来像这样:
Column
1 NA
2 1
3 NA
4 NA
5 NA
6 1
7 NA
...
我希望它看起来像这样:
Column
1 0
2 1
3 NA
4 0
5 NA
6 1
7 NA
...
我正在处理的列有 1000 多行,所以最后会有 space 表示 0 和 NA。
我试过这样的事情:
is.na(df_col[sample(seq(nrow(is.na(df_col))), 1000), "Column"]) <- 0
但是,这不起作用。没有 NA 值被替换。如果我取出 is.na()s 它可以工作,但值 1 可能会被替换,我不希望这样。你知道怎么解决吗?
我假设您想替换 1,000 个 NA 值,而不是选择 1,000 个索引并在它们为 NA 时替换它们。以下代码找到 NA
值的索引,然后用 0.
替换其中 1,000 个索引的随机样本
set.seed(123)
df <- tibble(x = rep(c(1, NA), times = 2000))
indices <- which(is.na(df$x))
df[sample(indices, 1000, replace = FALSE), "x"] <- 0
我正在尝试用 0 随机替换数据框列中的 1000 个 NA 值。该列仅由 NA 和 1 组成,看起来像这样:
Column
1 NA
2 1
3 NA
4 NA
5 NA
6 1
7 NA
...
我希望它看起来像这样:
Column
1 0
2 1
3 NA
4 0
5 NA
6 1
7 NA
...
我正在处理的列有 1000 多行,所以最后会有 space 表示 0 和 NA。
我试过这样的事情:
is.na(df_col[sample(seq(nrow(is.na(df_col))), 1000), "Column"]) <- 0
但是,这不起作用。没有 NA 值被替换。如果我取出 is.na()s 它可以工作,但值 1 可能会被替换,我不希望这样。你知道怎么解决吗?
我假设您想替换 1,000 个 NA 值,而不是选择 1,000 个索引并在它们为 NA 时替换它们。以下代码找到 NA
值的索引,然后用 0.
set.seed(123)
df <- tibble(x = rep(c(1, NA), times = 2000))
indices <- which(is.na(df$x))
df[sample(indices, 1000, replace = FALSE), "x"] <- 0