【问题标题】:Split then stack large dt with numerous columns [duplicate]拆分然后将大 dt 与许多列堆叠[重复]
【发布时间】:2016-08-15 04:21:56
【问题描述】:
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 列(代码、群、标签、值),然后相互堆叠。我已经尝试了以下方法,它正确拆分了它 - 现在我只需要能够将它们全部堆叠在一起

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

我非常感谢您对此的帮助。谢谢

【问题讨论】:

  • 列标题有什么不同?如果没有可重复的示例,将很难提供帮助...

标签: r data.table


【解决方案1】:

我们可以使用data.table中的melt,它可以在measure中使用多个patterns

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))

【讨论】:

    猜你喜欢
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 2017-03-28
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    相关资源
    最近更新 更多