2014-02-27 52 views
1

我有一个数据集需要分区,然后根据给定的一组中断点作为输入进行聚合。 比方说数据集是:R中的聚合和分层

> x.df 
    x1  x2 
1 84.05370 2 
2 39.61822 5 
3 97.58997 6 
4 78.28167 6 
5 14.52273 9 
6 17.18028 3 
7 61.31518 9 
8 97.63569 7 
9 40.52498 4 
10 13.21434 3 

和断点作为输入是

breaks = c(3,6) 

我需要找到X1的总和,其中X2在于这些桶(< = 3,3- 6,> 6)。我查看了aggregate()和cut()函数,但没有能够将它们放在一起以优雅的方式实现结果。

在此先感谢。

回答

4

您需要为休息时间添加类别。如您所见,低于/大于最小和最大间隔的值设置为NA。因此我附加最小值和最大值(-InfInf)。

cut(1:9, c(3,6)) 
[1] <NA> <NA> <NA> (3,6] (3,6] (3,6] <NA> <NA> <NA> 
Levels: (3,6] 

而且 - aggregate函数接受list使组,所以您必须提供休息的列表。

# add categories to breaks 
breaks <- c(-Inf,3,6,Inf) 

# aggregate 
aggregate(x.df$x1, by=list(cut(x.df$x2, breaks)), FUN=sum)