R:与data.table融为两列

时间:2019-04-12 12:36:19

标签: r data.table melt

我想将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.

0 个答案:

没有答案