我有一个以下形式的数据框:
Idx Var X12 X34
12 NA 444 100
34 NA 500 777
12 300 600 900
我需要将 Var 中的 NA 替换为“X”变量中“Idx”引用的正确值,因此如果 Idx=12,那么我们需要“X12”的值。生成的数据框将如下所示:
Idx Var X12 X34
12 444 444 100
34 777 500 777
12 300 600 900
我尝试将“Idx”与“X”连接起来,但 R 不认为这是一个有效的变量。我尝试过的:
df$Var <- ifelse(is.na(df$Var),
df[[paste0("X", df$Idx)]],
df$Var
但这给了我一个错误:
Error in .subset2(x, i, exact = exact) :
recursive indexing failed at level 2
最佳答案
解决方案,我迭代每一行并询问 Var
是否为 NA。如果 Var
为 NA,我提取相应的 Idx
列,否则返回 Var
。
d$Var <- apply(d, 1, function(x) ifelse(is.na(x[2]),
x[paste0("X", x[1])],
x[2]))
关于引用名称为 'composite' 的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46806744/