r - 在应用功能中组合/合并数据框
问题描述
我正在尝试在 mapply 函数中合并/组合数据帧。背景:使用的数据集:带有电影的数据框,有一列称为流派。此列有“|” - 每个电影 ID 的不同类型,例如“恐怖|动作|奇幻”。
我想生成一个数据框,它将每部电影的每个流派 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)
我也尝试使用合并功能。如果我在函数中打印,我可以看到每部电影正确生成的数据表。但运行此代码后,数据表(或数据帧)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
推荐阅读
- nginx - 带有目录位置的 GeoIP2 不起作用 | 没有目录位置工作
- javascript - 带有空字段的 HTML 表格
- tree - SML:具有基数和复合函数的树归约
- python - python mysql.connector模块使用了错误的IP地址
- gdb - 如何从 GDB x/64x $sp 命令中判断哪些指针是帧指针?
- laravel-5 - Laravel 5 双语产品模型
- bash - 运行 bash 脚本而不是单个文件执行两个
- sql - 带有随机 NEWID 列的临时表 T-SQL
- ansible - 将多个默认变量从 Chef 转换为 Ansible
- c# - ASP.NET Core Identity GenerateTwoFactorTokenAsync 返回空字符串