不管顺序如何,计算 2 个因素

Count 2 factors regardless of order

如何对 2 个因子列执行成对计数,而不考虑顺序。两列都包含许多相同的元素。

dplyr 的 group_by() %>% count() group_by() %>% tally() 函数执行排列计数。

是否有替代执行组合计数的选项或方法?

输入数据帧:

Factor1 <- c('A','A','B','B','C','B','D')
Factor2 <- c('B','B','A','C','B','B','E')
DF <- data.frame(Factor1,Factor2)

想要的结果:

CoFactors <- c('AB','BC','BB','DE')
n <- c(3,2,1,1)
Result <- data.frame(CoFactors,n)

在基础 R 中:

data.frame(table(apply(DF, 1, function(x)paste0(sort(x), collapse = ''))))
  Var1 Freq
1   AB    3
2   BB    1
3   BC    2
4   DE    1

甚至:

DF %>%
  mutate(Factor = pmin(Factor1, Factor2), 
         Factor2 = pmax(Factor1, Factor2)) %>%
  group_by(Factor, Factor2) %>%
  count()

# A tibble: 4 x 3
# Groups:   Factor, Factor2 [4]
  Factor Factor2     n
  <chr>  <chr>   <int>
1 A      B           3
2 B      B           1
3 B      C           2
4 D      E           1