Расплавленный вызов, который напоминает транспонирование - PullRequest
1 голос
/ 23 апреля 2019

Мне интересно, может ли мое двухшаговое решение быть уменьшено до одного 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)

1 Ответ

1 голос
/ 23 апреля 2019

Это можно сделать с помощью recast (обертка для melt/dcast)

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