2015-05-26 38 views
0

为了不插入代码片断而抱歉,在这个阶段,我在这个站点上仍然太低级,所以它阻止我这样做。返回聚合的唯一实例的计数

长话短说,我有一个超过60000条目的大型数据集。

我正在聚合各种不同的因素(14个不同的聚合,每个报告的三个不同部分)。

我正在根据平均分数进行聚合。

例如,一个样品是:

rurageeth3 <- aggregate(rural$Q8, by=list(Age = rural$Age, Ethnicity= rural$Ethnicity), mean, na.rm=TRUE) 

rurageeth3 <- rurageeth3[order(rurageeth3$x, decreasing=T),] 

rurageeth3 
     Age Ethnicity   x 
6 Eleven  Black 10.000000 
11 Fifteen  Mixed 9.500000 
10 Eleven  Mixed 9.375000 
1 Eleven  Asian 9.000000 
2 Fourteen  Asian 9.000000 
7 Fifteen  Black 9.000000 
8 Fourteen  Black 9.000000 
16 Eleven  Other 9.000000 
17 Fourteen  Other 9.000000 
21 Eleven  White 8.978799 
26 Twelve  White 8.860465 
25 Thirteen  White 8.841026 
12 Fourteen  Mixed 8.666667 
19 Thirteen  Other 8.666667 
24 Sixteen  White 8.644444 
23 Fourteen  White 8.623288 
5 Twelve  Asian 8.600000 
15 Twelve  Mixed 8.583333 
22 Fifteen  White 8.576087 
9 Thirteen  Black 8.500000 
14 Thirteen  Mixed 8.300000 
13 Sixteen  Mixed 8.000000 
18 Sixteen  Other 8.000000 
20 Twelve  Other 8.000000 
3 Sixteen  Asian 7.000000 
4 Thirteen  Asian 6.000000 

现在,我有rurageeth初始化,我想知道有多少,比如,十四岁的混血孩子被列入样本。

任何关于如何查看这些数据的想法,无需从头开始重新创建所有72个聚合体?

回答

1

假设您的数据每个主题有一行,您需要计算每个类别组合的行数。您可以单独执行,也可以在计算平均值的同时进行。

使用aggregate:非缺失值的

aggregate(rural$Q8, by=list(Age = rural$Age, Ethnicity= rural$Ethnicity), 
      FUN = function(x) c("Mean"=mean(x, na.rm=TRUE), "Count"=sum(!is.na(x)))) 

sum(!is.na(x))次数进行计数。如果您想要总数值,请使用length(x)

如果您愿意尝试其他选项,dplyrdata.table的速度都非常快。这里有一个dplyr的例子:

library(dplyr) 

# This will count the number of rows for each combination of Age and Ethnicity 
rural %>% group_by(Age, Ethnicity) %>% tally() 
+0

奇妙的是,所有这些选项都非常出色。非常感谢! –