dplyr 中各组之间的差异

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

我在 R 中有一个这样的数据框:

df = data.frame(
  repetition = c(1,1,1,2,2,2),
  group = c("a", "b", "c", "a", "b", "c"),
  res = c(10,8,9,12,9,10)
)

  repetition group res
1          1     a  10
2          1     b   8
3          1     c   9
4          2     a  12
5          2     b   9
6          2     c  10

现在,对于每次重复,我想计算每组的差异(在

res
中)。所以a组和b组、a组和c组、b组和c组之间的差异。然而,这可能有更多的群体。

我想要像

diff_a_b
diff_a_c
这样的专栏。 dplyr(或其他任何)有办法做到这一点吗?

r dplyr
1个回答
0
投票

也许你可以尝试一下

df %>%
    summarise(diff = list(setNames(
        as.data.frame(t(-combn(res, 2, diff))),
        paste0("diff_", combn(group, 2, paste0, collapse = "_"))
    )), .by = repetition) %>%
    unnest(diff)

这给出了

# A tibble: 2 × 4
  repetition diff_a_b diff_a_c diff_b_c
       <dbl>    <dbl>    <dbl>    <dbl>
1          1        2        1       -1
2          2        3        2       -1
© www.soinside.com 2019 - 2024. All rights reserved.