返回聚合的唯一实例的计数

时间:2015-05-26 22:14:15

标签: r

不插入代码片段的道歉,在这个阶段,我仍然在这个网站上太初级,所以它阻止我这样做。

长话短说,我有一个超过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初始化了,我想知道有多少,例如,样本中包含了14个混合种族的孩子。

我是如何看到这些数据的,不必从头开始重新创建所有72个聚合?

1 个答案:

答案 0 :(得分: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()