【发布时间】:2016-01-27 21:18:08
【问题描述】:
data.table 包为melt 数据同时添加到多个列中添加了一项新功能。这非常有用,但我不知道如何保留预熔变量名称的“后缀”。例如:
library(data.table)
# create data table
dt <- data.table(id = seq(3), a_3 = seq(3), a_4 = seq(4, 6), b_3 = seq(7, 9), b_4 = seq(10, 12))
# melt and cast in one step using new feature
m1 <- melt(dt, id.vars='id', measure=patterns("a_", "b_"), value.name=c("a_", "b_"))
数据表中的结果:
id variable a_ b_
1: 1 1 1 7
2: 2 1 2 8
3: 3 1 3 9
4: 1 2 4 10
5: 2 2 5 11
6: 3 2 6 12
这是我想要的“形状”,但变量a_3、a_4、b_3 和b_4 已被索引1 和2。我想要的是variable 列包含3,3,3,4,4,4,根据变量名的后缀。
我显然可以使用melt、strsplit、dcast 以“老式”方式执行此操作,但这有点麻烦。我希望有一个仍然非常快的单线解决方案。
【问题讨论】:
-
同意这一点很重要。不幸的是似乎还没有实现:github.com/Rdatatable/data.table/issues/2551
标签: r data.table