我正在尝试在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 为空...!
谢谢! 沃尔夫冈
答案 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