繁体   English   中英

组合表中data.table中的不同列值以形成另一个表的行值

[英]Combining different column values in data.table from a table to form row values of another table

我有下表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

第二表的第1-5行由第一表的第一行形成。 同样,第二个表格的第6-10、11-12、13-14和15行由表格1的第二,第三,第四和第五行组成。

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

我们可以转置数据集,删除第一个和最后一个元素,转换为向量,然后在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][]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM