在Apply功能中合并/合并数据帧

时间:2018-12-29 12:02:45

标签: r mapply

我正在尝试在mapply函数中合并/合并数据帧。背景: 使用的数据集:包含电影的数据帧,其中一列称为流派。该列具有“ |” -每个电影ID的流派都分开,例如“恐怖|动作|幻想”。

我想生成一个数据帧,为每个电影在新行中存储每个流派ID,以便为每个流派做静态操作,例如

id  genre
42  Horror
42  Action
42  Fantasy
43  Action

...

此后,我可以通过movie-id将movies-dataframe与生成的数据帧合并。

这是我正在尝试的:

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)

我也尝试过使用合并功能。如果在函数中打印照片,则可以看到每个电影的正确生成的数据表。但是在运行此代码后,数据表(或数据帧) moviegenres 为空...!

谢谢! 沃尔夫冈

1 个答案:

答案 0 :(得分:2)

我认为您需要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