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