如何计算 R 中变量的组合?

问题描述 投票:0回答:3

我正在尝试计算 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是分开算的。 任何建议将不胜感激!

r dataframe variables count combinations
3个回答
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

1
投票

使用

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

0
投票

请注意,此处使用 .$v1 而不仅仅是 v1 很重要,否则 v2= 将使用刚刚计算的修订版 v1 而不是原始 v1。

df %>% count(v1 = pmin(v1, v2), v2 = pmax(.$v1, v2))

如果可以在输出中使用 V1 和 V2(大写),则可以简化为:

count(df, V1 = pmin(v1, v2), V2 = pmax(v1, v2))
© www.soinside.com 2019 - 2024. All rights reserved.