Я использую выходные коэффициенты из модели регрессии glm, и мне нужно создать значение поиска, используя вставку ключа ([имя столбца]. [Уровень фактора], а затем вернуть соответствующее значение из другой таблицы данных. Столбецимена должны быть динамическими, чтобы мне не приходилось называть каждый столбец одно за другим. Возвращенные значения из поиска затем умножаются на 1 (для факторов) или на фактические числовые значения, а все имена coef_colname суммируются в столбце Total.
Я сделал несколько примеров в Excel, но не могу воспроизвести их в R. var_Factor1 объединяет имя столбца и уровень фактора из каждой строки (используя вставку), чтобы создать ключ для поиска следующего шага
var_Number1 - это просто имя столбца, так как оно числовое и не имеет уровней факторов
library(dplyr)
# original data
dt = data.table(
Factor1 = c("A","B","C"),
Number1 = c(10, 20,40),
Factor2 = c("D","H","N"),
Number2 = c(2, 5,3)
)
# Lookup table
model_coef = data.table(
Factor1.A = 10,
Factor1.B = 20,
Factor1.C = 30,
Factor2.D = 40,
Factor2.H = 50,
Factor2.N = 60,
Number1 = 200,
Number2 = 500
)
#initial steps
dt <- dt %>% mutate (
var_Factor1 = paste("Factor1", Factor1, sep =".")
, var_Number1 = "Number1"
, var_Factor2 = paste("Factor2", Factor2, sep =".")
, var_Number2 = "Number2"
) %>% mutate (
coef_Factor1 = model_coef[,var_Factor1]
)
#The final output should produce (as replicated from Excel)
final_output = data.table (
Factor1= c("A", "B", "C"),
Number1= c(10, 20, 40),
Factor2= c("D", "H", "N"),
Number2= c(2, 5, 3),
var_Factor1= c("Factor1.A", "Factor1.B", "Factor1.C"),
var_Number1= c("Number1", "Number1", "Number1"),
var_Factor2= c("Factor2.D", "Factor2.H", "Factor2.N"),
var_Number2= c("Number2", "Number2", "Number2"),
coef_Factor1= c(10, 20, 30),
coef_Number1= c(200, 200, 200),
coef_Factor2= c(40, 50, 60),
coef_Number2= c(500, 500, 500),
calc_Factor1= c(10, 20, 30),
calc_Number1= c(2000, 4000, 8000),
calc_Factor2= c(40, 50, 60),
calc_Number2= c(1000, 2500, 1500),
Total= c(3050, 6570, 9590)
)