【问题标题】:Create indicator variable for NA values in a dataframe using index values for larger dataset使用较大数据集的索引值为数据框中的 NA 值创建指示变量
【发布时间】:2018-07-09 22:09:22
【问题描述】:

我有一个包含大约 300 个特征和 100 万个观察值的数据框。我创建了一个列表变量,其索引值包含 80% 的数据作为 NA 值。

我的索引列表有 -> 2,4 我想为数据框索引为 2 ,3 的列创建一个指示变量,以将 NA 值替换为“0”,将列中的其他值替换为“1”

我尝试循环遍历每一行,但由于数据量很大,循环它需要很长时间。

输入数据框 -> df

col1 col2 col3
一个 NA 1 3
一个 不适用 1 不适用
一个 2 2 NA

预期输出:
col1 col2 col3
一个 0 1 1
一个 0 1 0
一个 1 2 0

谁能指出我正确的方向以更快地实现这一目标。

谢谢,
雷努卡

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    您可以使用 dplyr::mutate_at 选择要更改的列,然后应用 case_when 函数将 NA 重新编码为 0,将其他任何内容重新编码为 1,这应该比 for 循环快得多。

    library(dplyr)
    
    df %>%  
      mutate_at(vars(col1, col3), funs(
        case_when(
          is.na(.) ~ 0,
          TRUE ~ 1
      )))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      • 2013-11-22
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多