Фон
У меня есть фрейм данных с вложенным списком
Список содержит медицинские диагнозы. Я хочу преобразовать эти диагнозы в коды.
В каждом списке будет один код, извлеченный в столбец первичной диагностики, затем следующий диагноз будет извлечен в столбец вторичной диагностики, а затем третий. Каждый раз, когда диагноз совпадает с тем, что находится в списке, этот элемент удаляется из списка.
Проблема
Мне приходится повторять case_when каждый раз, когда я перебираю список, и я хотел бы иметь возможность ссылаться на список, а не повторять его каждый раз
Пример:
structure(list(myDx = list("Normal Study", c("There is Barretts with two things",
"everywhere", " Four biopsies taken"
), c("Mitotic lesion", " Barretts",
"Hiatus hernia", "THis was traversible",
"but only just"), "Hiatus Hernia", c("Some Barrett's was seen",
"There were no nodules"), c("HGD seen",
"mitotic lesion"))), row.names = c(NA, -6L), class = c("tbl_df",
"tbl", "data.frame"))
Мой код
mydf<-mydf %>%
mutate(
PrimaryDiagnosisCode = map(
mydx, ~ case_when(
grepl("mitotic|emr|tumour", tolower(.x)) ~ "C159 - Malignant neoplasm oesophagus, unspecified - Oesophagus - unspecified",
grepl("barrett",tolower(.x),ignore.case=TRUE) ~ "K227 - Barrett's oesophagus",
grepl("hiatus",tolower(.x),ignore.case=TRUE) ~ "K449 - Diaphragmatic hernia without obstruction or gangrene",
TRUE ~ "other")
),
mydx = map(
mydx, ~ .x[!grepl("(mitotic|emr|tumour|dysplasia|hiatus|stricture|barrett|hiatus", tolower(.x),ignore.case=TRUE,perl=TRUE)]
)
)
Я должен повторить это для второго диагноза и третьего диагноза (с изменением имени в mutate)
Это дает мне вывод, который я хочу:
PrimaryDiagnosis SecondDiagnosis ThirdDiagnosis
K227
C159 K227 K449
K449
K227
C159
Что я ищу:
mydf<-mydf %>%
mutate(
PrimaryDiagnosisCode = map(
mydx, ~ case_when(REFERENCE TO MY GREPS)
),
mydx = map(
mydx, ~ .x[!grepl("(mitotic|emr|tumour|dysplasia|hiatus|stricture|barrett|hiatus", tolower(.x),ignore.case=TRUE,perl=TRUE)]
)
)