2013-05-01 36 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