我有一个数据集需要被打包,然后根据作为输入给出的一组断点进行聚合。 让我们说数据集是:
> 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()函数,但是无法将它们放在一起以优雅的方式实现结果。
提前致谢。
答案 0 :(得分:4)
您需要为休息时间添加类别。如您所见,低于/高于最小值和最大值的值的值设置为NA
。因此,我附加了最小值和最大值(-Inf
和Inf
)。
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)