2014-01-20 73 views
2

我開始在R中學習,甚至在很多論壇中尋找這個主題,但我找不到一個好答案。也許我沒有用正確的術語進行搜索,或者在R中不可能做到,所以請道歉我的無知。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

它的推移而上,我認爲這些結果可能b e以直方圖形式彙總。我有86個名字,參加了38個不同的項目,在3個不同的可能位置。

任何想法,如果它可以做R?它如何完成?任何可用的代碼模板或我可以用來獲得此答案的文檔?

## MY嘗試(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) 

當我打印 '表',它顯示了這個輸出:

, , 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嘗試(END)
+0

是的,這是可能的。你試過什麼了? –

+0

嗨@ScottRitchie,謝謝你的回覆。我用我試過的東西編輯了這個問題。 –

回答

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 
+0

謝謝@ScottRitchie。它爲我需要評估這個數據集的幾個主題提供了很多幫助。我在這裏做了一些事情,這也可以幫助我進行這種評估。正如評論欄中的字符數量有限,我會用我幾分鐘前做的事回答我自己的問題。 –

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)來回答我的問題的另一種方式。我認爲這是一個好主意,分享,以便其他人可以申請。