Я хотел бы иметь возможность заменить нулевые значения во фрейме данных, используя таблицу поиска значений замены, где значение замены отличается для каждого столбца. Поверьте, что простой пример ниже объясняет проблему и желаемый результат.
# Dummy data frame
A <- seq(0,5,1)
B <- seq(5,0,-1)
C <- c(1,3,0,4,2,5)
dfr<-data.frame(A,B,C)
A B C
0 5 1
1 4 3
2 3 0
3 2 4
4 1 2
5 0 5
# Lookup table with replacement values
D <- c('A','B','C')
E <- c(0.5,0.04,0.003)
lku <- data.frame(D,E)
D E
A 0.500
B 0.040
C 0.003
# Desired answer
A B C
0.50 5.00 1.000
1.00 4.00 3.000
2.00 3.00 0.003
3.00 2.00 4.000
4.00 1.00 2.000
5.00 0.04 5.000
Таким образом, если в столбце A при использовании справочной таблицы найден ноль, то ноль заменяется на 0,50, но для столбца B ноль заменяется на 0,04 и т. Д. Я не уверен, с чего начать, кроме как проходить по столбцам один за другим с помощью цикла и указывать на соответствующую строку таблицы поиска?
Обновление
Я попробовал зацикливание, но не смог заставить это работать - объяснение почему бы не помочь.
for(i in 1:3){
ifelse(dfr[ ,i] == 0, lku[i,2], dfr[ ,i])
}