2016-06-10 65 views
1

我有一個大的數據集,看起來像類似於此,如何從R中的多列分組頻率繪製箱形圖?

StudentID SectorID ClassID 
1   A Team_1 Class_1 
2   A Team_1 Class_1 
3   B Team_1 Class_1 
4   B Team_2 Class_1 
5   B Team_2 Class_1 
6   A Team_2 Class_1 
7   A Team_3 Class_1 
8   C Team_3 Class_2 
9   C Team_3 Class_2 
10   C Team_3 Class_2 
11   C Team_3 Class_2 
12   C Team_1 Class_2 
13   D Team_1 Class_2 
14   D Team_1 Class_2 

這可以通過產生,

stg <- data.frame(StudentID = c(rep("A", 2), rep("B", 3), rep("A", 2), rep("C", 5), rep("D", 2) ), 
        SectorID = c(rep("Team_1", 3), rep("Team_2", 3), rep("Team_3", 5), rep("Team_1", 3)),    
        ClassID  = c(rep("Class_1", 7), rep("Class_2", 7))    
) 

然後,設法找到每個扇區,然後類別分組StudentID的頻率。

stg.a <- aggregate(stg$StudentID, by = list(SectorID = stg$SectorID, ClassID = stg$ClassID), count) 

但是,這裏計數返回某種複雜的列表。如果你檢查stg.a,你會奇怪或顯然誤導輸出。所以,我它轉換爲一個矩陣,

stg.a.f <- as.data.frame(as.matrix(stg.a)) 

和看起來像這樣,

SectorID ClassID x.x x.freq 
1 Team_1 Class_1 1, 2 2, 1 
2 Team_2 Class_1 1, 2 1, 2 
3 Team_3 Class_1 1  1 
4 Team_1 Class_2 3, 4 1, 2 
5 Team_3 Class_2 3  4 

第一行讀取, 在TEAM_1,在Class_1學生編號1(ID:A),出現了2次, 學生號碼2(ID:B),出現1次。我想要看到頻率(如果可能的話,根據Student_ID(xx)以顏色分開),然後按照某些因素進行分組(例如,隊,類)

回答

0

我看到試圖找到頻率複雜沒有預期的結果。我建議通過查找組合項目並記錄它們的頻率來創建一個簡單的數據框架。這可以使用table功能如下完成:

stg.a <- as.data.frame(table(stg$StudentID, stg$SectorID, stg$ClassID)) 
names(stg.a)<-c(colnames(stg), 'Freq') 

有可能的組合與零值。根據所需的分析,您可能會也可能沒有價值來保存或從集中刪除它們。如果刪除零值是最好的選擇,那麼運行命令

stg.a<-stg.a[which(stg.a$Freq>0),] 

這應該提供一個更容易的平臺來建立你的圖。

讓我知道你是否需要幫助與情節。我會要求比OP更清楚你想要展示什麼以及如何展示。

+0

1)感謝您的時間百萬@sfyn。你的幫助當然可以解決我試圖解決的基本問題。但是,在這個解決方案中,我無法應用(還)方面來顯示不同的分組。 <<仍然我正在嘗試 2)在我之前解決問題的方法中:它包含數據中的StudentID信息,可能使我們有可能根據StudentID爲每個點着色。我想,這很有趣。 「我像前面那樣打牆。 –