类似于转置的 melt 调用
A melt call that resembles a transpose
我想知道我的两步解决方案是否可以减少到一个 melt()
调用或使用 data.table
以某种方式更简单地完成。
我的数据:
DT <- data.table(category = c("x", "y"), `2010` = c(10, 20), `2011` = c(40, 43))
DT # Has much more columns in reality
category 2010 2011
1: x 10 40
2: y 20 43
预期输出:
year x y
1: 2010 10 20
2: 2011 40 43
当前解决方案:
library(data.table)
melt(DT, id.vars = "category", variable.name = "year")[, dcast(.SD, year ~ category)]
可以用 recast
完成(melt/dcast
的包装)
library(reshape2)
recast(DT, variable ~ category, id.var = 'category')
使用 data.table
版本 >= 1.12.4,对于这种特殊情况,您可以使用 transpose
如下:
transpose(DT, keep.names="year", make.names="category")
输出:
year x y
1: 2010 10 20
2: 2011 40 43
我想知道我的两步解决方案是否可以减少到一个 melt()
调用或使用 data.table
以某种方式更简单地完成。
我的数据:
DT <- data.table(category = c("x", "y"), `2010` = c(10, 20), `2011` = c(40, 43))
DT # Has much more columns in reality
category 2010 2011
1: x 10 40
2: y 20 43
预期输出:
year x y
1: 2010 10 20
2: 2011 40 43
当前解决方案:
library(data.table)
melt(DT, id.vars = "category", variable.name = "year")[, dcast(.SD, year ~ category)]
可以用 recast
完成(melt/dcast
的包装)
library(reshape2)
recast(DT, variable ~ category, id.var = 'category')
使用 data.table
版本 >= 1.12.4,对于这种特殊情况,您可以使用 transpose
如下:
transpose(DT, keep.names="year", make.names="category")
输出:
year x y
1: 2010 10 20
2: 2011 40 43