2015-02-11 102 views
-1

我有一个名为“会议”的字段,另一个名为“会员”。每次会议都有几位会员参加这个活动。我想要做的就是提取一张表,只是参加同一会议的“成员”的二元关系。如何创建基于第二个基于两个单元格的组合的新表?

假设我们有参加者约翰,杰克,杰米和巴勃罗的“联合国会议1945”。该表将不得不给我:

John, Jack 
John, Jamie 
John, Pablo 
Jack, Jamie 
Jack, Pablo 
Jamie, Pablo 
+0

你想从然而,许多的两个组合都通过'会议members'? – pnuts 2015-02-11 20:35:55

+2

实际上一点都不清楚,因为你的例子与我无关(对我而言)?也许尝试重新措辞。 – 2015-02-11 21:15:10

+0

所以你想要的是,每个会议参与者的所有k-组合(k = 2)(没有重复和无论顺序如何(对于这种类型的数学观点,请参见http:// en .wikipedia.org /维基/组合))? – mirirai 2015-02-12 15:00:35

回答

-1

你可能不要求在为r的解决方案,但使用SPSS对这个问题将是相当不好受(如果可能的话)。

让我们假设你有一个CSV文件(会议Participants.csv),它看起来是这样的:

Conference,Participant 
UN Conference 1945,John 
UN Conference 1945,Jack 
UN Conference 1945,Jamie 
UN Conference 1945,Pablo 
UN Conference Kyoto 1997,Ben 
UN Conference Kyoto 1997,Katie 
UN Conference Kyoto 1997,Julie 

在R您能解决您的难题下面的方式。

library(data.table) 
library(combinat) # you probably have to install this package first 

# read csv-file 
df <- read.csv("Conference-Participants.csv") 

# split the data by conferences 
subs <- split(df, df$Conference) 

# create new data frame with "Conference" and all possible 
# pair combinations of participants ("Participant 1", "Participant 2") 
df2 <- rbindlist(
    lapply(subs, 
    function(sub) as.data.frame(cbind(
     as.character(sub$Conference[1]), 
     t(combn(sub$Participant,2)) 
     )) 
) 
) 

# Set the column names 
setnames(df2, c("Conference", "P1", "P2")) 

# store the new data frame to a csv-file 
write.csv(df2, "Conference-Pairs.csv") 

的结果则是这样的

    Conference P1 P2 
1:  UN Conference 1945 John Jack 
2:  UN Conference 1945 John Jamie 
3:  UN Conference 1945 John Pablo 
4:  UN Conference 1945 Jack Jamie 
5:  UN Conference 1945 Jack Pablo 
6:  UN Conference 1945 Jamie Pablo 
7: UN Conference Kyoto 1997 Ben Katie 
8: UN Conference Kyoto 1997 Ben Julie 
9: UN Conference Kyoto 1997 Katie Julie 
+0

非常感谢。我会试一下! – 2015-02-14 18:56:13

+0

致敬:你介意告诉什么导致downvote?谢谢。 – mirirai 2015-02-14 22:07:38

+0

对不起!而不是投票我投了下来!我试图扭转它。 – 2015-02-16 01:30:59

相关问题