【问题标题】:Combining different column values in data.table from a table to form row values of another table将一个表中data.table中不同的列值组合成另一个表的行值
【发布时间】:2017-03-11 19:21:05
【问题描述】:

我有下表 DT-1。列代表不同的状态

 id    col1   col2  col3  col4  col5 col6
qw-1   ABC   XYZ    QRT   RWQ   OIP  KIJ
qw-2   WET   ERT    YUP   TIP   IUR  ETY
qw-3   QRT   ERT    RWQ   YUP   0     0
qw-4   XYZ   QRT    RWQ    0    0     0
qw-5   YUP    0     0     0     0     0 

我想形成另一个表格 DT-2,表格中的行如下所述:

 1   ABC   XYZ
 2   XYZ   QRT
 3   QRT   RWQ
 4   RWQ   OIP
 5   OIP   KIJ
 6   WET   ERT
 7   ERT   YUP
 8   YUP   TIP
 9   TIP   IUR
 10  IUR   ETY
 11  QRT   ERT
 12  RWQ   YUP
 13  XYZ   QRT
 14  QRT    RWQ
 15  YUP

第 2 个表的第 1-5 行由第 1 个表的第 1 行组成。同样,第 2 个表的第 6-10、11-12、13-14 和 15 行由表 1 的第 2、3、4、5 行构成。

是否有任何 data.table 方法或任何其他 R 包可以做到这一点?

【问题讨论】:

    标签: r data.table dplyr aggregate data-munging


    【解决方案1】:

    我们可以转置数据集,删除第一个和最后一个元素,转换为向量,然后在 data.frame 中创建两列

    library(data.table)
    m1 <- t(setDF(DT1)[-1])
    d1 <- data.frame(col1= c(m1[-length(m1)]), col2 = c(m1[-1]), stringsAsFactors=FALSE)
    

    或者我们可以melt然后进行分组操作

    dN <- setDT(melt(t(DT1[-1])))[, .(col1 = value[-.N], 
                   col2 = value[-1]), Var2][, Var2 := NULL][]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-06
      • 2021-03-24
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      相关资源
      最近更新 更多