使用较大数据集的索引值为数据帧中的NA值创建指标变量

时间:2018-07-09 22:09:22

标签: r dplyr

我有一个包含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

有人可以指出正确的方向来更快地实现这一目标。

谢谢,
雷努卡

1 个答案:

答案 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
  )))