gpt4 book ai didi

重构/ reshape 数据框 ( r )

转载 作者:行者123 更新时间:2023-12-04 10:29:21 26 4
gpt4 key购买 nike

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

这是我的数据:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com