Если вы хотите знать только количество других взаимодействий, это сработает:
df <- data.frame(Group = c("A", "B", "D", "A", "C", "D", "D", "B", "C"),
UserID = c("User1", "User1", "User1", "User2", "User2", "User3", "User4", "User5", "User5"))
library(tidyverse)
df %>%
group_by(Group, UserID) %>% # make sure there are no double entries
summarise() %>% # make sure there are no double entries
group_by(UserID) %>%
mutate(NGroups = n()) %>% # how many interactions has this user
ungroup() %>%
group_by(Group, NGroups) %>%
summarise(N = n()) %>% # count for each Group - NInteractions combination the frequency
ungroup() %>%
pivot_wider(names_from = NGroups, values_from = N)
Если вы хотите подсчитать количество для каждой отдельной комбинации групп, вам следует начать;):
df %>%
group_by(Group, UserID) %>%
summarise() %>%
group_by(UserID) %>%
mutate(GroupsString = paste0(Group, collapse="")) %>%
ungroup() %>%
group_by(Group, GroupsString) %>%
summarise(N = n()) %>%
ungroup()