У меня есть фрейм данных с 27 парами столбцов, первый в паре - символьный вектор с названием рецепта наркотика («кодеин», «гидрокодон», «гидроморфон» и т. Д. c), а второй столбец - числовой вектор с дозировкой, я хотел бы рассчитать пероральный морфиновый эквивалент, используя дозировку и коэффициент пересчета на основе рецепта. имена и коэффициенты преобразования следующие:
кодеин: 0,15 гидрокодон: 1 гидроморфон: 4 оксикодон: 1,5 трамадол: 0,1 морфин: 1
Я написал код для выполнения этого действия с одним пара столбцов, и это довольно просто, используя оператор case_when
ome_3 <- ome_2%>%mutate(morphine_eq_1 = case_when(str_detect(Pre_Op_Drug_Name_1, "orco")~Pre_Op_Dose_1__mg_,
str_detect(Pre_Op_Drug_Name_1, "ydrocodone")~Pre_Op_Dose_1__mg_,
str_detect(Pre_Op_Drug_Name_1, "orphone")~Pre_Op_Dose_1__mg_ * 4,
str_detect(Pre_Op_Drug_Name_1, "xycodone")~Pre_Op_Dose_1__mg_ * 1.5,
str_detect(Pre_Op_Drug_Name_1, "ramadol")~Pre_Op_Dose_1__mg_/10,
str_detect(Pre_Op_Drug_Name_1, "ilaudid")~Pre_Op_Dose_1__mg_ * 4,
str_detect(Pre_Op_Drug_Name_1, "xycontin")~Pre_Op_Dose_1__mg_ * 1.5))
Но как мне повторить один и тот же оператор мутации (case_when) для всех 27 пар столбцов, чтобы получить 27 новых столбцов эквивалентов морфина? Я в растерянности после дня, пробовал за l oop или элементарное метапрограммирование безрезультатно.
Спасибо всем!