R 从数据框中提取两个人在一个问题上共同工作的实例,加上小时数和问题名称

R 从数据框中提取两个人在一个问题上共同工作的实例,加上小时数和问题名称,r,dplyr,igraph,R,Dplyr,Igraph,我的最终目标是创建一个网络图,可能是使用igraph,为100人小组显示每个人在各种事务(项目)上的合作情况。图中两个人之间边缘的厚度将反映该人在该问题上的工作时间,并且图将识别他们都在该问题上工作的名称 到目前为止,我已经使用了dplyr创建了一个宽数据框,看起来像下面的玩具数据集 dput(soQ) structure(list(Matter = c("A", "B", "C", "D", "E", "F"), Person1 = c(5, 0, 0, 0, 2, 4), Per

我的最终目标是创建一个网络图,可能是使用
igraph
,为100人小组显示每个人在各种事务(项目)上的合作情况。图中两个人之间边缘的厚度将反映该人在该问题上的工作时间,并且图将识别他们都在该问题上工作的名称

到目前为止,我已经使用了
dplyr
创建了一个宽数据框,看起来像下面的玩具数据集

dput(soQ) 

structure(list(Matter = c("A", "B", "C", "D", "E", "F"), Person1 = c(5,    
0, 0, 0, 2, 4), Person2 = c(0, 3, 0, 2, 0, 0), Person3 = c(2,    
2, 0, 0, 3, 2), Person4 = c(0, 1, 1, 1, 0, 2)), row.names = c(NA,    
-6L), class = c("tbl_df", "tbl", "data.frame"))
有人能告诉我们R如何创建一个数据框,列出两个人在同一问题上工作的实例,并为这些实例包括问题名称和小时数吗?结果可能如下所示:

Person   WorkedWith  Matter  Hours

Person1   Person3     A       5

Person1   Person3     E       2

Person1   Person3     F       4

Person1   Person4     F       4

Person3   Person1     A       2

Person3   Person1     E       3

人员1与人员2在任何事项上合作,人员3在3个事项(A、E和F)上合作,人员4在一个事项(F)上合作。Person1和Person3记录了他们一起工作的不同时间

第二个人和第三个人在一件事(B)上合作,第四个人在一件事(B)上合作,以此类推


谢谢你的时间和努力。

我想这就是你想要的

df%
枢轴长度(cols=-物质)%>%
过滤器(值>0)%>%
左联合(,,by=“Matter”)%>%
过滤器(name.x!=name.y)%>%
转换(Person=name.x,WorkedWith=name.y,
物质,小时=值.x)%>%
安排(人)

我想这就是你要找的

df%
枢轴长度(cols=-物质)%>%
过滤器(值>0)%>%
左联合(,,by=“Matter”)%>%
过滤器(name.x!=name.y)%>%
转换(Person=name.x,WorkedWith=name.y,
物质,小时=值.x)%>%
安排(人)

非常好。我花了更长的时间与代码斗争,并最终创建的问题比你花了回答它!但你带来了我不知道的技术。我针对实际数据运行了代码,并在transmute()调用中得到一个错误:“错误:列'Name'[我所称的事项]无法修改,因为它是一个分组变量”。当我删除它时,专栏标题仍然是“Name”,所以一切都很好。很高兴它起作用了。我与网络公司合作进行研究,所以我以前也做过类似的事情。如果我能做些改变让答案更好,请告诉我。太好了。我花了更长的时间与代码斗争,并最终创建的问题比你花了回答它!但你带来了我不知道的技术。我针对实际数据运行了代码,并在transmute()调用中得到一个错误:“错误:列'Name'[我所称的事项]无法修改,因为它是一个分组变量”。当我删除它时,专栏标题仍然是“Name”,所以一切都很好。很高兴它起作用了。我与网络公司合作进行研究,所以我以前也做过类似的事情。如果我能做些改变,让答案更好,请告诉我。