如何查找列中的所有组合并计算数据中的出现次数

Tah*_*rar 3 combinations r count

我正在尝试在第1列的值数据中找到所有实际组合。

然后,我想按第2列计算所有这些事件的发生。

感觉R应该可以很快地做到这一点。我尝试阅读combn和expand.grid,但没有成功。主要问题是我找不到有关如何在列中生成组合的任何指导。

我的数据如下:

Animal (n=57) | Person ID (n=1000)
Dog     | 0001
Cat     | 0004
Bird    | 0001
Snake   | 0002 
Spider  | 0002
Cat     | 0003
Dog     | 0004
Run Code Online (Sandbox Code Playgroud)

预期输出为:

AnimalComb | CountbyID

Cat         | 1
DogBird     | 1
SnakeSpider | 1
CatDog      | 1
Run Code Online (Sandbox Code Playgroud)

编辑删除了猫的错误条目

Ron*_*hah 5

如果我理解正确的,你需要group_by PersonID和paste所有的unique Animal组中的S和计数其组合的出现可以完成组(在计算行数的数量n()由不同值的数目),并除以(n_distinct)。

library(dplyr)

df %>%
  group_by(PersonID) %>%
  summarise(AnimalComb = paste(unique(Animal), collapse = ""), 
            CountbyID = n() / n_distinct(Animal)) 

#  PersonID AnimalComb  CountbyID
#     <int> <chr>           <dbl>
#1        1 DogBird             1
#2        2 SnakeSpider         1
#3        3 Cat                 1
#4        4 CatDog              1
Run Code Online (Sandbox Code Playgroud)