我正在尝试计算 R 数据框中三个变量的组合出现次数。
如果我有以下数据框:
df <- data.frame(v1 = c("A", "A", "B", "B"),
v2 = c("B", "C", "C", "A"))
v1 v2
A B
A C
B C
B A
我正在尝试计算两个变量的组合,其中“AB”将被视为与“BA”相同。 我想最终得到这样的结果:
comb n
A,B 2
A,C 1
B,C 1
我尝试使用
count(df, v1, v2)
但是AB和BA是分开算的。 任何建议将不胜感激!
使用
pmin
和 pmax
可能对这个简单的示例有所帮助:
mutate(df, v12=paste0(pmin(v1, v2), pmax(v1, v2))) |>
count(v12)
v12 n
1 AB 2
2 AC 1
3 BC 1
您需要先
paste
将两列一起排序,然后count
。
library(dplyr)
df |>
rowwise() |>
mutate(combn = paste0(sort(c(v1, v2)), collapse = ",")) |>
count(combn) |>
ungroup()
# A tibble: 3 × 2
combn n
<chr> <int>
1 A,B 2
2 A,C 1
3 B,C 1