r - 如何将 data.table 列的值列表绑定为额外的行
问题描述
我有一个与 R data.table 相关的问题。在我的表中,一列 ('b') 可以包含多个值。对于每个逗号分隔的值,我想在数据表中有一个额外的行,旁边是列“a”的值。
# begin format data
d= data.table(a=c(1:3), b = c('a','b','c,d'))
# end format data
d2= data.table(a=c(1:3,3), b = c('a','b','c','d'))
我已经开始分离 b 列并将其存储为列表,但无法弄清楚如何获取最终的最终格式数据。
d[,b2:= strsplit(b, ",")]
非常感谢任何帮助
解决方案
最终,这确实是如何操作 data.table 中的 data.frame 的骗局,尽管由https://github.com/Rdatatable/data.table/issues/2146和https://github.com/Rdatatable/告知数据表/问题/3672。
长话短说,通用的“正确方式”很可能
tidyr::unnest(d[, b := strsplit(b, ",")], b)
# # A tibble: 4 x 2
# a b
# <int> <chr>
# 1 1 a
# 2 2 b
# 3 3 c
# 4 3 d
尽管您可以使用这些数据来解决它
d[, b := strsplit(b, ",")
][, setnames(do.call(data.frame, .SD), names(d)), by = seq_len(nrow(d))
][,-1]
# a b
# <int> <char>
# 1: 1 a
# 2: 2 b
# 3: 3 c
# 4: 3 d
推荐阅读
- php - php 内爆代码不起作用 代码丢失
- spring - Spring:双向 OneToMany/ManyToOne 关系中的 AnnotationException
- excel - 很少有细胞没有得到适当的保护,为什么?
- amazon-ec2 - 什么是 AWS Ec2 中的虚拟处理器核心以及如何使用 Linux 和 Windows 命令找到它
- elasticsearch - 弹性搜索的 Micronaut 指标
- laravel - 架构连接无法链接到非默认数据库
- nativescript - 如何在模态视图上使用 nativescript-social-share 插件?
- c++ - 如何在 SLOT 中链接特定功能
- c++ - Char 数组指针和“错误:'char []' 的初始化程序太多”
- javascript - 未定义未捕获的 ReferenceError 函数()