从另一个包含 R 中元素列表的数据帧中的 a.character 列创建数据帧



我有以下数据框(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

最新更新