我正在努力计算数据中独特组合的数量。我想首先将它们分组,id然后计算每个值的组合出现的次数。d-f在这里,元素是否组合在 '或 中并不重要f-d,它们仍然属于同一类别,因为它们具有相同的元素:
combinations:
n
c-f: 2 # aslo f-c
c-d-f: 1 # also cfd or fdc
d-f: 2 # also f-d or d-f. The dash is only for isualization purposes
Run Code Online (Sandbox Code Playgroud)
虚拟示例:
# my data
dd <- data.frame(id = c(1,1,2,2,2,3,3,4, 4, 5,5),
cat = c('c','f','c','d','f','c','f', 'd', 'f', 'f', 'd'))
> dd
id cat
1 1 c
2 1 f
3 2 c
4 2 d
5 2 f
6 3 c
7 3 f
8 4 d
9 4 f
10 5 f
11 5 d
Run Code Online (Sandbox Code Playgroud)
使用paste@benson23 提供的一个很好的解决方案,但它认为是唯一的类别f-d和d-f. 然而,我希望顺序并不重要。谢谢你!
在 中创建一个“组合”列summarise,我们可以在之后对该列进行计数。
计算类别的一个简单方法是在开始时对它们进行排序,那么在这种情况下它们都将处于相同的顺序。
library(dplyr)
dd %>%
group_by(id) %>%
arrange(id, cat) %>%
summarize(combination = paste0(cat, collapse = "-"), .groups = "drop") %>%
count(combination)
# A tibble: 3 x 2
combination n
<chr> <int>
1 c-d-f 1
2 c-f 2
3 d-f 2
Run Code Online (Sandbox Code Playgroud)