У меня есть набор данных, где каждая строка соответствует образцу, который был проверен на наличие определенных c лекарств (один образец может иметь более одного лекарства). Я пытаюсь найти наиболее распространенные комбинации лекарств, и я хотел узнать, есть ли лучший способ сделать это. Это пример моего набора данных:
id = c(id1,id2,id3,id4,id5,id6,id7,id8)
d1 = c(1,1,0,1,0,1,0,1)
d2 = c(0,0,1,0,1,1,1,0)
d3 = c(1,0,1,1,0,1,0,1)
df = tibble(id, d1, d2, d3)
столбец id
соответствует идентификатору образца, а другие столбцы - лекарства, для которых был протестирован каждый образец (в исходном наборе данных у меня 42 препарата / столбцы). 1 означает Да, 0 означает Нет.
Чтобы получить количество комбинаций, я сделал следующее:
df %>% unite("tot", d1:d3, sep = "-", remove = F) %>%
group_by(tot) %>% summarise(n = n())
# A tibble: 5 x 2
tot n
<chr> <int>
1 0-1-0 2
2 0-1-1 1
3 1-0-0 1
4 1-0-1 3
5 1-1-1 1
Хорошо, теперь я знаю эту комбинацию 1-0-1
(d1 + d3 ) является наиболее распространенным. Это относительно просто, учитывая, что в примере у меня есть только 3 препарата. Проблема в том, что когда я делаю это для 42 лекарств, я получаю огромную строку, которую мне нужно перевести обратно.
Есть ли более эффективный способ сделать это? Спасибо!