我在R开始学习,甚至在很多论坛上都在寻找这个话题,我找不到一个好的答案。也许我没有使用正确的术语进行搜索,或者也许在R中无法进行搜索,所以请为我的无知道歉。
我想知道两位专业人员参与某个项目的次数。除此之外,我想绘制它们在一起被发现时的位置。
我没有使用下面的具体表示法。例如,假设我有以下字符串数组:
Project1: Bob (President), Joe (Vice President), Mary (Participant), Paul (Participant)
Project2: Bob (President), Joe (Vice President), Sue (Participant), Bill (Participant)
Project3: Paul (President), Sue (Vice President), Bob (Participant), Joe (Participant)
Project'n: (...)
输出将是: 鲍勃(总统)&乔(副总统)= 2 鲍勃(总统)&玛丽(参与者)= 1 鲍勃(总统)&保罗(参与者)= 1 鲍勃(参与者)&保罗(总统)= 1 苏(副总统)&乔(参与者)= 1
它一直在继续,我假设这些结果可以在直方图中聚合。我有86个名字,参加了38个不同的项目,分别位于3个不同的位置。
如果可以在R中做任何想法吗?它怎么能完成?我可以使用任何可用的代码模板或文档来获得这个答案吗?
## MY ATTEMPT(START)Groups <- data.frame (Name=c('Paul','Paul','Paul','Bob','Bob','Sue','Bill'),Group=c('P1','P2','P3','P1','P2','P3','P3'),Role=c('President','President','President','Vice President','Vice President','Participant','Participant'))
Table <- table (Groups)
当我打印'Table'时,它会显示以下输出:
, , Role = Participant
Group
Name P1 P2 P3
Bill 0 0 1
Bob 0 0 0
Paul 0 0 0
Sue 0 0 1
, , Role = President
Group
Name P1 P2 P3
Bill 0 0 0
Bob 0 0 0
Paul 1 1 1
Sue 0 0 0
, , Role = Vice President
Group
Name P1 P2 P3
Bill 0 0 0
Bob 1 1 0
Paul 0 0 0
Sue 0 0 0
现在 - 例如 - 在项目“P1”中,我们可以看到保罗担任总裁,鲍勃担任副总裁。项目“P2”也是如此。在“P3”中,我们有保罗作为总统,苏和比尔都作为参与者。
我现在怀疑如何计算整个项目中给定关系的出现次数。类似的东西:
Paul/President & Bob/Vice = 2 occurrences,
Paul/President & Sue/Participant = 1 occurrence,
Paul/President & Bill/Participant = 1 occurrence, etc
基本上是基于特定人/角色组合出现的'hist'。
## MY ATTEMPT(END)答案 0 :(得分:1)
现在您已拥有Table
,您可以使用apply
在不同的轴上计算不同类型关系的出现次数:
每个项目有多少种不同类型的参与者?
> apply(Table, c(2,3), sum)
Role
Group Participant President Vice President
P1 0 1 1
P2 0 1 1
P3 2 1 0
人物角色组合出现多少次?
> apply(Table, c(1,3), sum)
Role
Name Participant President Vice President
Bill 1 0 0
Bob 0 0 2
Paul 0 3 0
Sue 1 0 0
每个人在哪个项目工作?
> apply(Table, c(1,2), sum)
Group
Name P1 P2 P3
Bill 0 0 1
Bob 1 1 0
Paul 1 1 1
Sue 0 0 1
每个人有多少个项目在工作?
> apply(Table, 1, sum)
Bill Bob Paul Sue
1 2 3 1
每个项目涉及多少人?
> apply(Table, 2, sum)
P1 P2 P3
2 2 3
每个角色有多少人?
> apply(Table, 3, sum)
Participant President Vice President
2 3 2
答案 1 :(得分:1)
感谢@ScottRitchie提供的建议。经过一些额外的阅读和测试后,我发现了以下内容:
导入的csv文件包含名称,项目和角色的列。我还在最后添加了另一列,就像一个计数器(从头到尾的常量值为1)。
我做了:
Groupings <-read.csv("~/Documents/TCC_BIGDATA/Test.csv", sep=";")
Groupings$Counter <- as.integer(Groupings$Counter)
print(Groupings)
Project Name Role Counter
1 P1 Paul President 1
2 P1 Bob Vice President 1
3 P1 Sue Participant 1
4 P1 Bill Participant 1
5 P2 Paul Vice President 1
6 P2 Bob Participant 1
7 P2 Bill President 1
8 P3 Bob President 1
9 P3 Bill Vice President 1
10 P3 Sue Participant 1
名单在列表中显示多少次?
aggregate(Counter ~ Name, data = Groupings, sum)
Name Counter
1 Bill 3
2 Bob 3
3 Paul 2
4 Sue 2
名称+角色组合在列表中显示多少次?
aggregate(Counter ~ Name + Role, data = Groupings, sum)
Name Role Counter
1 Bill Participant 1
2 Bob Participant 1
3 Sue Participant 2
4 Bill President 1
5 Bob President 1
6 Paul President 1
7 Bill Vice President 1
8 Bob Vice President 1
9 Paul Vice President 1
可以进行其他练习和组合。最后,它只是另一种实现相同的方式(@ScottRitchie)来回答我的问题。我认为分享是一个好主意,以便其他人可以申请。