拆分然后堆叠大dt与众多列

时间:2016-08-15 04:21:56

标签: r data.table

PD0_Code  PD0_Flock PD0_Tag PD0_Value   PD1_Code    PD1_Flock   PD1_Tag PD1_Value   PD2_Code    PD2_Flock   PD2_Tag PD2_Value

您好 我有一个包含384列的数据表。我需要它从宽变换为长格式。由于列标题不同,我不能使用熔化或分割/堆叠。以上是我正在处理的列标题的格式。我需要的是将大dt分成4列(代码,Flock,Tag,Value),然后堆叠在一起。我已经尝试了以下内容并将其正确分割 - 现在我只需要能够将它们全部叠加在一起

split(dt2, (seq_along(4)))
x <- cbind(obj.list)

我真的很感激这方面的一些帮助。感谢

1 个答案:

答案 0 :(得分:4)

我们可以使用melt中的data.table patternsmeasure可以使用library(data.table) melt(setDT(df1), measure = patterns("Code$", "Flock$", "Tag$", "Value$"), value.name = c("Code", "Flock", "Tag", "Value"))

df1 <- structure(list(PD0_Code = c(1L, 3L, 5L), PD0_Flock = c(4L, 9L, 
7L), PD0_Tag = c(3L, 4L, 3L), PD0_Value = c(4L, 6L, 4L), PD1_Code = c(2L, 
4L, 6L), PD1_Flock = c(1L, 8L, 9L), PD1_Tag = c(4L, 4L, 3L), 
PD1_Value = c(1L, 5L, 4L), PD2_Code = c(1L, 6L, 5L), PD2_Flock = c(3L, 
9L, 4L), PD2_Tag = c(3L, 4L, 2L), PD2_Value = c(1L, 3L, 7L
)), .Names = c("PD0_Code", "PD0_Flock", "PD0_Tag", "PD0_Value", 
"PD1_Code", "PD1_Flock", "PD1_Tag", "PD1_Value", "PD2_Code", 
"PD2_Flock", "PD2_Tag", "PD2_Value"), class = "data.frame", 
 row.names = c(NA, -3L))

数据

XMLHttpRequest: require('../../../../xmlhttprequest').XMLHttpRequest