R中的聚合和跳跃

时间:2014-02-27 06:40:52

标签: 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()函数,但是无法将它们放在一起以优雅的方式实现结果。

提前致谢。

1 个答案:

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