不管顺序如何,计算 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
如何对 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