2015-04-20 71 views
0

我真的很難找出如何對數據進行定量分類並總結基於這些組的描述性統計數據的排序的反向分析。R基於定量子集總結定性數據(dplyr?)

爲了便於解釋,請參閱下面的玩具數據框來捕捉我的問題。

structure(list(ID = 1:10, Color = structure(c(3L, 3L, 1L, 2L, 
1L, 1L, 3L, 3L, 4L, 2L), .Label = c("blue", "green", "red", "yellow" 
), class = "factor"), Type = structure(c(3L, 2L, 1L, 2L, 2L, 
1L, 2L, 3L, 3L, 2L), .Label = c("Both", "Indoor", "Outdoor"), class = "factor"), 
    W1 = c(74.22, 78.59, 45.82, 41.9, 83.44, 97.76, 38.41, 140.68, 
    65.95, 64.46), W2 = c(26.86, 138.8, 41.75, 95.32, 17.57, 
    23.13, 84.81, 93.33, 104.31, 67.66), W3 = c(42.25, 56.37, 
    105.95, 72.64, 82.6, 90.55, 54.55, 122.41, 29.03, 44.09), 
    W4 = c(68.77, 12.67, 58.69, 125.95, 24.33, 34.84, 113.12, 
    10.02, 127.05, 60.3), W5 = c(28.93, 99.35, 126.18, 84.31, 
    138.55, 6.18, 144.63, 99.31, 40.76, 9.42), W6 = c(130.24, 
    149.72, 124.67, 118.97, 102.55, 96.96, 135.88, 38.08, 69.69, 
    120), W7 = c(1.94, 94.22, 12.66, 29.71, 137.53, 116.29, 145.58, 
    40.32, 44.51, 99.16), W8 = c(41.61, 147.42, 40.82, 143.51, 
    114.19, 83.16, 108.72, 86.37, 16.6, 91.13)), .Names = c("ID", 
"Color", "Type", "W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8" 
), class = "data.frame", row.names = c(NA, -10L)) 

我想用這個數據做什麼是以W開頭的列的循環,它顯示了不同時間點的值。具體來說,我想說:對於每一列,基於像「大於100」這樣的值條件的子集,然後基於該子集總結了定性列(顏色和類型),其中統計數據類似於每個分組的計數週。

因此,它涉及到對每列應用函數,然後使用每個列中的特定子集來返回基於兩列的彙總統計信息。大致說來,我過去曾經使用plyr和dplyr軟件包對不同的小組進行分組和總結。所以在這種情況下,我可以弄清楚如何在這個df上使用numcolwise(mean)來查看每種顏色的平均值。但我想不出如何去做這個變化。

非常感謝您的幫助。

回答

1

我不知道我是否理解100%你想要什麼。這是你想要的嗎? 我在這裏過濾所有的周beeing大於100的值,然後獲得計數顏色的組合並輸入

library(dplyr) 
library(magrittr) 
library(tidyr) 
gather(df, Week, Value, 4:11) %>% 
     filter(Value > 100) %>% 
     group_by(Color,Week) %>% 
     summarise(Count = n()) %>% 
     spread(Week, Count) 

會有一定的NA值寬幅表明在給定的一週有沒有價值

+0

嗨,感謝您的迴應。不熟悉第二個包,所以我會看看。我的最終目標是做第8周的工作,而是在df的所有星期。我不想過濾多個星期,我想爲每個單獨的一週提供相同的分析(顏色和類型的分組)。 –

+0

請給我所需的輸出,這應該如何? – grrgrrbla

+0

每個定性列的類似df佈局。因此,對於顏色(不是兩者,只是按顏色分組)將在第1列的行中具有所有可能的顏色。然後,每週的總結計數將在其餘列中。所以在上面的例子中,第8周的結果將在df的最後一列。 –