Я хочу перекодировать несколько переменных (около 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 минут, потому что он все еще не запустился (в надежде, что это запустится в считанные секунды, а не минуты).
Есть идеи, как это сделать эффективно?