У меня есть таблица со списком наблюдений, связанных с различными группами.
Animal Sector Time Group
Cat 1 Night A
Cat 1 Night B
Cat 2 Night B
Bat 2 Night A
Bat 3 Night C
Bat 3 Night A
Bat 3 Night B
Mouse 1 Day B
Mouse 2 Night A
Mouse 2 Night B
Deer 2 Day A
Deer 2 Night B
Deer 2 Night C
Я называю Животное + Сектор + Время, объединенное как наблюдение. В группах нет повторяющихся наблюдений, но в полном наборе данных много групп. Я хотел бы иметь попарную матрицу того, сколько повторяющихся наблюдений сделано между группами. В приведенном выше примере попарно идентичные наблюдения между группами были бы:
Groups A + B:
Cat 1 Night
Bat 3 Night
Mouse 2 Night
Groups A + C:
Bat 3 Night
Groups B + C:
Bat 3 Night
Deer 2 Night
(в группе A и группе B)
Наиболее близким у меня является этот код, он не создает вместо попарной матрицы в ней перечислены общие наблюдения:
df %>%
group_by(Animal, Sector, Time) %>%
summarise(
samples = paste(unique(Group), collapse = ""),
n = length(unique(Group)))
Меня больше интересует количество общих наблюдений между группами, а не точная идентификация наблюдений.
Если кто-нибудь может дать мне советы о том, как это сделать в dplyr или base R. Это было бы очень полезно.
В конечном итоге цель состоит в том, чтобы визуализировать его с помощью парной матрицы, где каждая плитка дает количество общих наблюдений между 2 группами. Я пытался составить тепловую карту, но я бы предпочел попарную матрицу:
df$observations <- paste(df$Animal,df$Sector,df$Time)
dfpw <- table(df[,c("Group","observations")])
counts <- apply(dfpw,2,sum)
dfpw_shared <- tt[,which(counts>=2)] # shared by at least two groups
heatmap(dfpw_shared ,scale="none")
Эта текущая визуализация идентифицирует наблюдения на оси X и группы на оси Y. Я бы предпочел Группы по осям X и Y и количество наблюдений, совместно используемых в тайлах.
Я бы предпочел, чтобы визуализация показывала попарную матрицу с количеством счетчиков, совместно используемых в тайлах (включая плитки с 0 общими наблюдениями между группами).
Заранее благодарен за любую помощь.