我有以下数据框(dt(
id genre score
1 "action & adventure, sci-fi, comedy" 10
2 "sci-fi" 7
3 "action & adventure" 8
4 "fantasy, comedy" 2
...
我基本上想创建一个表格,其中包含每种流派和每种流派的每笔分数总和的平均分数
在这种情况下,它将是
genre score
action & adventure 18
sci-fi 17
fantasy 2
comedy 12
我确信有一些优雅的方法可以做到这一点,但我唯一能想到的是为每个流派在 dt 中创建一系列假人,然后将其乘以分数,然后对每列的元素求和。 提前感谢您的帮助
dplyr way...
library(tidyverse)
d %>% separate_rows(genre,sep = ",") %>%
mutate_at(vars(genre), str_trim) %>%
group_by(genre) %>%
summarise(sum_score = sum(score, na.rm = T),
mean_score = mean(score, na.rm = T))
输出为
# A tibble: 4 x 3
genre sum_score mean_score
<chr> <dbl> <dbl>
1 action & adventure 18 9
2 comedy 12 6
3 fantasy 2 2
4 sci-fi 17 8.5