首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合来自一个表的data.table中的不同列值,以形成另一个表的行值

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

Stack Overflow用户
提问于 2017-03-12 03:21:06
回答 1查看 60关注 0票数 0

我有下面的表格DT-1。这些列表示不同的状态

代码语言:javascript
复制
 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,其中表中的行如下所述:

代码语言:javascript
复制
 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包可以做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2017-03-12 05:35:58

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

代码语言:javascript
复制
library(data.table)
m1 <- t(setDF(DT1)[-1])
d1 <- data.frame(col1= c(m1[-length(m1)]), col2 = c(m1[-1]), stringsAsFactors=FALSE)

或者我们可以melt,然后执行group by操作

代码语言:javascript
复制
dN <- setDT(melt(t(DT1[-1])))[, .(col1 = value[-.N], 
               col2 = value[-1]), Var2][, Var2 := NULL][]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42739522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档