我有一个数据集,它需要被桶化,然后根据作为输入的一组断点进行聚合。假设数据集是:
> 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)。我查看了聚合()函数和cut()函数,但未能将它们组合在一起,从而以一种优雅的方式实现结果。
提前谢谢。
发布于 2014-02-27 06:43:24
您需要在休息时间中添加类别。如您所见,值低于/大于中断的最小值和最大值设置为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)https://stackoverflow.com/questions/22060906
复制相似问题