2013-05-01 66 views
3

使用by我可以基於因子列獲得所需列的統計數據。如何從一組子因子中獲得統計數據?

舉例來說,如果我想知道每個物種Sepal.Width/Sepal.Length的,這個比例在虹膜數據幀,我會去這樣的:

by(iris$Sepal.Width/iris$Sepal.Length, iris$Species, mean) 
iris$Species: setosa 
[1] 0.6842483 
------------------------------------------------------------ 
iris$Species: versicolor 
[1] 0.4676804 
------------------------------------------------------------ 
iris$Species: virginica 
[1] 0.4533956 

到目前爲止好。現在,問題是,我怎麼能相同,但只有一個子集。例如setosaversicolor only?

我有一個複雜的數據框架,有數千個因素。爲了創建基於不同統計數據的子集,我玩了一些表格。然後,我想回到我的原始數據框架,併爲我期望的子集因素創建更多數字。

感謝

+0

有大量的這種方法,他們中的一些勾勒出在這裏:http://stackoverflow.com/a/9800266/1036500你可能會考慮提出另一個問題這些節目多您實際使用情況的具體複雜程度,以獲得更有用的答案。 – Ben 2013-05-01 06:29:49

回答

5
with(droplevels(subset(iris, Species %in% c("setosa", "versicolor"))), 
    by(Sepal.Width/Sepal.Length, Species, mean)) 
+0

你說得對。固定。 – 2013-05-01 06:34:22

+0

+1 - 如果用'droplevels()'包裝'subset()'調用,則更好。 – 2013-05-01 06:37:03

+0

嘿,你應該寫這個答案。 – 2013-05-01 06:41:06