我有一个这样的数据框架:
Col-1: id。
Col-2:范围从0到100。
Col-3:值。
id col-2 value
...
id 10.00 2
id 10.53 2
id 11.11 88
id 11.76 6
id 12.00 2
id 12.12 2
id 12.35 163
id 12.50 6
id 12.90 2
id 13.33 5
id 13.58 366
id 13.64 8
id 14.29 10
id 14.81 725
...
id 100 45我想做100箱的Col-2,并在该时间间隔内将Col-3中的值相加。我该怎么做呢?例如,输出将如下所示:
id 0-1 sum-value-in-interval
id 1-2 sum-value-in-interval
id 2-3 sum-value-in-interval
...
id 10-11 4
id 11-12 94
...
id 99-100 sum-value-in-interval谢谢你的帮助!
发布于 2016-01-01 12:27:32
这是一个基于dplyr的解决方案。让您的数据称为dat
library(dplyr)
dat%>%mutate(quantile = ntile(col2,100))%>%group_by(quantile)%>%summarize(sumValueInInterval = sum(col3))
发布于 2016-01-01 12:27:39
我们可以使用cut创建一个分组变量,在aggregate中使用它来获得'col2‘的sum。
df1$group <- as.character(cut(df1$col2, breaks=1:100))
aggregate(col3~group+id, df1, FUN=sum)或者,可以使用data.table完成此操作
library(data.table)
setDT(df1)[, group:= cut(col2, breaks=1:100)
][,list(col3= sum(col3)) ,.(group, id)]数据
set.seed(24)
df1 <- data.frame(id= paste0('id', rep(1:2, each=50)),
col2=rnorm(100, sample(100)), col3= sample(500, 100, replace=TRUE))https://stackoverflow.com/questions/34553491
复制相似问题