2015-02-11 101 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

相關問題