2014-04-24 34 views
2

我有一個如下所示的數據集。每個產品(P *)都具有一定的功能(F *)開/關(1/0)。我無法很好地格式化表格。R中的分組和可視化累積功能

Product F1 F2 F3 F4 .... 
P1  1 0 1 1 
P2  0 1 1 0 
P3  1 0 1 1 
P4  0 0 0 1 
.. 
.. 
Total  2 1 3 3 

我有兩個問題。其中一個涉及如下所述的創建摘要,另一個涉及可視化這些數據。

1)總結: 鑑於此數據集,我想獲得產品的總和是在(1特徵的每個組合)。例如:

F1,F3,F4 = 2 i.e F1,F3,F4 are present in 2 products P1,P3. 
F3,F4 = 2 i.e F3, F4 are present in 2 products P1,P3 
F1, F2 = 2 
F1, F4 = 2 

在我的實際數據集中,功能的數量約爲200個,產品數量類似於10k +。爲了優化計算,我不介意提供具有特定功能的產品百分比的閾值。我的意思是,從給出的例子來說,可以說我的閾值是50%,並且有4個產品,所以任何超過50%的特徵即2被認爲是分組,並且在這種情況下它將會是特徵F1,F3,F4。 F1不被認爲是,因爲它的列總和是< 2.

2)可視化: 我想的條形圖中可視化該結果的。隨意建議是否有更好的方法來形象化。

我的方法:我是R和統計學的新手,但熟悉C#。

  1. 計算每個要素的總和。
  2. 對於從最高計數開始的每組總和來確定所有具有此功能的產品。從上面的示例數據集中:F3,F4的最大數量爲3(閾值內),因此獲得所有F3,F4開啓的產品。接下來(最大計數 - 1)2,這將是功能F1,F3,F4,並獲取所有這些功能打開的產品。直到滿足閾值爲止。

我正在學習編寫此代碼的過程,因此無法分享代碼示例。

考慮到我的數據集的維度,我相信我的方法在計算上很昂貴,並且相信可能有更好的方法來實現這一點。預先感謝您的努力。

+1

因爲它的立場這個問題過於寬泛:你問多個問題,而答案需要很長的教程不是很適合這個格式的形式。我會說dplyr工具和ggplot2可視化包是專門爲這種類型的問題而設計的,並且會推薦閱讀以下解釋:http://vita.had.co.nz/papers/tidy-data.pdf –

+0

如果我明白這一點你有多達200個功能,並且你想爲這200個每個獨特的1或0組合進行求和。這應該是2^200可能的組合,超過10^60。如果是這樣的話,我不認爲這是一個可行的項目。 –

+0

感謝大衛和約翰,爲您的時間。我將探索dplyr工具。是的,我同意這樣做在計算上花費很大,只是想獲得反饋和反彈的想法。 – user1596213

回答

1

給你一個想法如何vizualize的東西。

# reading your example data 
df <- read.table(text="Product F1 F2 F3 F4 
P1  1 0 1 1 
P2  0 1 1 0 
P3  1 0 1 1 
P4  0 0 0 1", header=TRUE, strip.white=TRUE) 

# reshape the data from wide to long format 
require(reshape2) 
df2 <- melt(df, id="Product") 

# creating a barplot 
require(ggplot2) 
ggplot(df2, aes(x=Product, y=value, fill=variable)) + 
    geom_bar(stat="identity") 

這給: enter image description here

+0

謝謝Jaap回答我的可視化查詢。除此之外,重塑API幫助我發現新事物。 – user1596213