我有一个包含300个特征和100万观察值的数据框。我创建了一个列表变量,其索引值包含80%的数据作为NA值。
我的索引列表具有-> 2,4 我想为数据框索引2,3的列创建一个指标变量,以将NA值替换为“ 0”,并将其他值替换为“ 1”
我试图遍历每一行,但是由于数据量巨大,因此需要很长时间才能遍历它。
输入数据框-> df
行 col1 col2 col3
NA 1 3
NA 1个 NA
a 2 2 NA
预期输出:
第 col1 行, col3
一个 0 1 1
一个 0 1 0
a 1 2 0
有人可以指出正确的方向来更快地实现这一目标。
谢谢,
雷努卡
答案 0 :(得分:0)
您可以使用dplyr::mutate_at
选择要更改的列,然后应用case_when
函数将NA重新编码为0,将其他任何值重新编码为1,这比for循环要快得多。 / p>
library(dplyr)
df %>%
mutate_at(vars(col1, col3), funs(
case_when(
is.na(.) ~ 0,
TRUE ~ 1
)))