在数据框中拆分组并重新聚合

Split groups in a data frame and re-aggregate

我有这个数据框,

df <- data.frame(
  group = c(
    'Oxidation (M)',
    'Unmodified',
    'Acetyl (Protein N−term)',
    'Acetyl (Protein N−term);Oxidation (M)',
    'Unmodified;Acetyl (Protein N−term)'
  ),
  freq = c(10,5,6,3,1)
)
group freq
Oxidation (M) 10
Unmodified 5
Acetyl (Protein N−term) 6
Acetyl (Protein N−term);Oxidation (M) 3
Unmodified;Acetyl (Protein N−term) 1

最后两行由已经存在且始终;

分隔的组组成

我想进一步拆分这些组,并重新聚合他们的 freq 结果:

df_expected <- data.frame(
  group = c(
    'Oxidation (M)', 
    'Unmodified',
    'Acetyl (Protein N−term)'
  ),
  freq = c(13, 6, 10)
)
group freq
Oxidation (M) 13
Unmodified 6
Acetyl (Protein N−term) 10

我一直在尝试使用聚合,但到目前为止没有成功。

这个有用吗:

library(tidyr)
library(dplyr)
df %>% separate_rows(group, sep = ';') %>% group_by(group) %>% summarise(freq = sum(freq))
# A tibble: 3 x 2
  group                    freq
  <chr>                   <dbl>
1 Acetyl (Protein N-term)    10
2 Oxidation (M)              13
3 Unmodified                  6