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

R 使用较大数据集的索引值为数据帧中的NA值创建指示符变量,r,dplyr,R,Dplyr,我有一个数据框架,大约有300个特性和100万个观察值。我创建了一个列表变量,其索引值包含80%的数据作为NA值 我的索引列表有->2,4 我想为dataframe的索引为2、3的列创建一个指示符变量,用“0”替换NA值,用“1”替换列中的其他值 我试图循环每一行,但由于数据量巨大,循环需要很长时间 输入数据帧->df 行col1col2col3 aNA13 aNA1NA a22NA 预期输出: 行col1col2col3 a011 a010 a120 谁能给我指出一个正确的方向来更快地实现这一

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

我的索引列表有->2,4 我想为dataframe的索引为2、3的列创建一个指示符变量,用“0”替换NA值,用“1”替换列中的其他值

我试图循环每一行,但由于数据量巨大,循环需要很长时间

输入数据帧->df

col1col2col3
aNA13
aNA1NA
a22NA

预期输出:
col1col2col3
a011
a010
a120

谁能给我指出一个正确的方向来更快地实现这一目标

谢谢,

Renuka

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

library(dplyr)

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