如何将行 ["A, B, C", "7"] 转换为三行 ["A", "7"], ["B", "7"], ["C", "7"]

Thi*_*doy 3 string split r tidyverse

想象一下下表

埃莱姆 频率
A 14
甲、乙 7
甲、丙 8
甲、乙、丙 1
乙、丙 3
11
C 6

如何将其转换为表格,在表格中隔离每个元素并对频率求和。

在这种情况下将是

学期 频率
A 30
22
C 18

我想写一个巨大的 case_when (我有超过三个元素)来搜索整个表并对它们存在的行的频率求和,但这太多了

我想像这样打破界限:

埃莱姆 频率
A 14
A 7
7
A 8
C 8
A 1
1
C 1
3
C 3
11
C 6

然后将其分组为频率总和,但我不知道如何

Tho*_*ing 6

你可以尝试separate_longer_delim然后summarise

library(dplyr)
library(tidyr)

df %>%
    separate_longer_delim(Elem, ", ") %>%
    summarise(Freq = sum(Freq), .by = Elem)
Run Code Online (Sandbox Code Playgroud)

你将获得

  Elem Freq
1    A   30
2    B   22
3    C   18
Run Code Online (Sandbox Code Playgroud)

  • `separate_rows(Elem, sep=", ")` 在这种情况下也是有效的。 (2认同)