类似于移调的融化调用

时间:2019-04-23 10:08:54

标签: r data.table melt

我想知道我的两步解决方案可以简化为一个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(magrittr)
melt(DT, id.vars = "category", variable.name = "year") %>% 
  dcast(year ~ category)

2 个答案:

答案 0 :(得分:2)

使用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

答案 1 :(得分:1)

可以用recastmelt/dcast的包装器)完成

library(reshape2)
recast(DT, variable ~ category, id.var = 'category')