R: Расплавить с data.table в две колонки - PullRequest
0 голосов
/ 12 апреля 2019

Я хотел бы преобразовать data.table из широкого формата в длинный."Нормальный" расплав работает нормально, но я хотел бы объединить мои данные в два разных столбца.

Я нашел информацию об этом здесь: https://cran.r -project.org / web / packages / data.table / vignettes / datatable-reshape.html (Точка 3)

Я пробовал это с моим кодом, но почему-то это не работает, и до сих пор я не мог понять проблему.Было бы здорово, если бы вы могли объяснить мне ошибку в следующем примере.

Спасибо

#Create fake data
a = c("l1","l2","l2","l3")
b = c(10, 10, 20, 10)
c = c(30, 30, 30, 30)
d = c(40.2, 32.1, 24.1, 33.0)
e = c(1,2,3,4)
f = c(1.1, 1.2, 1.3, 1.5)

df <- data.frame(a,b,c,d,e,f)
colnames(df) <- c("fac_a", "fac_b", "fac_c", "m1", "m2.1", "m2.2")

#install.packages("data.table")
require(data.table)
TB <- setDT(df)

#Standard melt - works
TB.m1 = melt(TB, id.vars = c("fac_a", "fac_b", "fac_c"), measure.vars = c(4:ncol(TB)))

#Melt into two columns
colA = paste("m1", 4, sep = "")
colB = paste("m2", 5:ncol(TB), sep = "")
DT = melt(TB, measure = list(colA, colB), value.name = c("a", "b"))
#Not working, error: Error in melt.data.table(TB, measure = list(colA, colB), value.name = c("a",  : One or more values in 'measure.vars' is invalid.
...