在应用函数中组合/合并数据帧

Combining / Merging data frames in apply function

我正在尝试在 mapply 函数中合并/组合数据帧。背景: 使用的数据集:有电影的数据框,有一列叫做genres。此列有“|” - 为每个电影 ID 分离流派,例如"Horror|Action|Fantasy".

我想生成一个数据框,将每部电影的每个流派 ID 存储在一个新行中,这样我就可以为每个流派做静态分析,例如

id  genre
42  Horror
42  Action
42  Fantasy
43  Action

...

在此之后,我可以通过电影 ID 将电影数据帧与生成的数据帧连接起来。

这是我正在尝试的:

moviegenres <- data.table(id=integer(), genre=character())


genres <- mapply(function(id, m){
    g <- unlist(str_split(m, "\|"))
    df <- data.table(id=id, genre=g)
    rbind(df)
},movies$id, movies$genres)

我也用合并函数试过了。如果我在函数中打印,我可以看到每部电影的正确生成数据 tables。但是在运行这段代码之后数据table(或数据框)moviegenres是空的...!

谢谢! 沃尔夫冈

我觉得你很需要separate_rows

library(tidyverse)

df <- data.table(id = c(1,2), genre = c( "Horror|Action|Fantasy",  "Horror|Action|Fantasy"))

df %>% 
    separate_rows(genre, sep = "\|")

   id   genre
1:  1  Horror
2:  1  Action
3:  1 Fantasy
4:  2  Horror
5:  2  Action
6:  2 Fantasy