我有一个数据集,需要对它进行存储,然后根据作为输入给出的一组断点进行汇总。可以说数据集是:
> 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()函数,但无法将它们放在一起以一种优雅的方式实现结果。
提前致谢。
您需要为休息时间添加类别。如您所见,低于/大于中断的最小值和最大值的值设置为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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句