如何将一列分组为间隔,并聚合另一列中的相应值

时间:2011-08-03 18:01:02

标签: r grouping aggregate intervals

在datafreame中,我有2个变量,一个是发送的免费样本数,另一个是结果的购买数。我想将自由样本变量分组为0,1到5,5到10,大于10的间隔。然后累计每个区间的购买数列的观察结果以表格形式呈现。

非常感谢任何帮助

2 个答案:

答案 0 :(得分:8)

在基地R中,这样做的方法很简单。首先生成新变量,然后使用ave()

binnedSamples <- cut( myDF$freeSamples, breaks = c(0, 1, 5, 10, 10^6) )
tapply( myDF$purchases, binnedSamples, sum )

(开始接受你喜欢的答案和投票)

答案 1 :(得分:5)

以下是使用plyr

的一种方法
require(plyr)
mydf = data.frame(
  npurchases = rpois(20, 10),
  nsamples  = rpois(20, 10)
)

ddply(mydf, .(cut(nsamples, breaks = c(0, 1, 5, 10, 10^6))), summarize, 
    npurchases = sum(npurchases))