У меня есть набор данных, в котором пациент сообщал о побочных эффектах в течение нескольких посещений. В R это выглядит так:
data = data.frame("patient" = c("P1", "P1", "P1", "P2", "P2", "P2"),
"side.effect" = c("Headache", "Dizzy", "Headache", "Cramps", "Dizzy", "Headache"))
Я хотел бы подсчитать количество побочных эффектов, о которых сообщают> 10% пациентов, сохранить метку побочного эффекта для побочных эффектов, возникающих у> 10% пациентов, и объединить все остальное в другую категорию. В конце это будет выглядеть примерно так (но с гораздо большим количеством данных):
SideEffect Count
Dizzy 2
Headache 2
Other 1
У меня проблемы с вычислением, потому что есть несколько записей для одного и того же пациента. Если бы они не были повторениями, я бы использовал fct_lump из библиотеки dplyr. Прямо сейчас
Мой текущий прогресс:
data %>%
group_by(side) %>%
summarize("num.side.effect" = n_distinct(subject.ID)) %>%
mutate("condensed.side.effects" = ifelse(num.side.effect > 50,
adverse.event.term, "other"))
Который не совсем делает то, что я хочу. Есть предложения?