У меня есть набор данных людей с рядом заболеваний.У людей либо есть (1), либо нет (0) каждое условие (мой реальный набор данных имеет 14).То, что я хочу сделать, это обобщить данные, чтобы я знал, как часто встречаются пары условий.Обратите внимание, что у некоторых людей может быть три или четыре условия, но меня интересует парное совпадение.Затем я хотел бы представить это как тепловую карту.
Я подозреваю, что решение включает в себя функцию "сбора" из tidyr, но я не смог ее решить.Это пример того, как выглядит мой вклад и чего я хотел бы достичь:
Вот некоторые данные об отдельных лицах и о том, имеют ли они условия "a", "b" или "c":
library(tidyverse)
library(viridis)
dat <- tibble(
id = c(1:15),
a = c(1,0,0,0,1,1,1,0,1,0,0,0,1,0,1),
b = c(1,0,0,1,1,1,0,0,1,0,0,1,1,0,1),
c = c(0,0,1,1,0,1,0,1,0,1,1,0,1,1,0))
Я хочу резюмировать, как часто каждое из условий возникает, и как часто они встречаются совместно.В этом случае очевидно, что условия «a» и «b» встречаются чаще, чем любой из них с «c», что обычно происходит само по себе.Ниже мое воображаемое представление о том, как будут выглядеть данные в графическом формате.Первый столбец - «переменная 1», второй - «переменная 2», а третий - счетчик того, как часто они встречаются вместе.Ниже приведен график, который я имею в виду.
plotdat <- tibble(
var1 = c("a", "a", "a", "b", "b", "c"),
var2 = c("a", "b", "c", "b", "c", "c"),
count = c(7, 6, 2, 8, 3, 8))
ggplot(plotdat) +
geom_tile(aes(var1, var2, fill = count)) +
scale_fill_viridis()
Возможно, это совсем не правильный подход, и мне действительно нужно преобразовать данные в матрицу 3х3.Любые возможные решения будут с благодарностью приняты!