【发布时间】:2019-01-14 16:13:46
【问题描述】:
我想根据另一个变量中的值重新编码多个变量(其中大约 90 个)。
这是一个示例:
df <- data.frame(var1 = c(1,0,5,10,0), var2 = c(1:5), var3 = c(1:5), var4 =
c(1:5), var5 = c(1:5), var6 = c(1:5), var90 = c(1:5))
df
var1 var2 var3 var4 var5 var6 var90
1 1 1 1 1 1 1 1
2 0 2 2 2 2 2 2
3 5 3 3 3 3 3 3
4 10 4 4 4 4 4 4
5 0 5 5 5 5 5 5
当 var1 = 0 时,我想将 var2 重新编码为 var90 为 0,否则保持原样。
我可以使用以下方法轻松地重新编码单个变量:
df[df$var1 == 0, c("var2")] <- 0
我可以使用数字符号将其应用于多列:
df[df$var1 == 0, c(2:7)] <- 0
在这个小样本集上做得很好,这是预期的结果:
var1 var2 var3 var4 var5 var6 var90
1 1 1 1 1 1 1 1
2 0 0 0 0 0 0 0
3 5 3 3 3 3 3 3
4 10 4 4 4 4 4 4
5 0 0 0 0 0 0 0
但是,在我的完整数据集(约 90 个变量,90,000 行)上,我不得不在大约 20 分钟后中止,因为它仍然没有运行(希望让它在几秒钟内而不是几分钟内运行)。
关于如何有效地解决这个问题的任何想法?
【问题讨论】:
标签: r