重构/ reshape 数据框 ( r )

标签 r reshape2

我的数据集对从事项目的人进行了重复观察。我需要一个包含两列的数据框,其中列出了每个人和时间点的项目“组合”。让我用一个例子来解释:

这是我的数据:

ID    Week    Project    
01    1       101
01    1       102 
01    1       103
01    2       101
01    2       102
02    1       101
02    1       102
02    2       101

第 1 周第 1 个人 (ID = 1) 参与了三个项目。这意味着该人在本周有六种可能的项目组合(project_i 和 project_j)。

这就是我需要的
ID   Week    Project_i  Project_j
01    1      101        101
01    1      101        102
01    1      101        103
01    1      102        101
01    1      102        102    
01    1      102        103
01    1      103        101
01    1      103        102
01    1      103        103
01    2      101        101
01    2      101        102
01    2      102        101
01    2      102        102
02    1      101        101
02    1      101        102
02    1      102        101
02    1      102        102
02    2      101        101

丢失每周只有一个项目的案例不是问题。

我已经尝试了基本的 r 和 reshape2,但我想不通。

最佳答案

这是一种方法:

library(data.table)
setDT(DT)

DT[, CJ(P1 = Project, P2 = Project)[P1 != P2], by=.(ID, Week)]

    ID Week  P1  P2
 1:  1    1 101 102
 2:  1    1 101 103
 3:  1    1 102 101
 4:  1    1 102 103
 5:  1    1 103 101
 6:  1    1 103 102
 7:  1    2 101 102
 8:  1    2 102 101
 9:  2    1 101 102
10:  2    1 102 101
CJ是两个向量的笛卡尔连接,采用所有组合。

如果您不想要 (101,102) 和 (102,101),请使用 P1 > P2而不是 P1 != P2 .哦,OP 已经改变了问题...所以使用 P1 <= P2 .

关于重构/ reshape 数据框 ( r ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36606838/

相关文章:

r - qqline 连接第一和第三四分位数。如何在不同的分位数(即 30% 和 70%)之间画一条线?

r - 如何获取大数据帧每一行中特定元素的数量?

使用 dcast reshape 数据?

r - 如何通过分解包含 r 中向量的列来拉伸(stretch)数据框?

r - 如何在R中将数据移动两个月?

r - R中的复杂数据 reshape

r - 关闭 plot.ecdf() 中的虚线

r - 对于堆叠条和闪避条,如何从图例中删除闪避条元素?

r - 使用 2 个变量将数据帧从宽转换为长

r - dcast 不将变量类型保留为字符,当变量为 NA 时 vapply 出错