首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中绑定数字?

如何在R中绑定数字?
EN

Stack Overflow用户
提问于 2016-01-01 12:21:19
回答 2查看 1.4K关注 0票数 2

我有一个这样的数据框架:

Col-1: id。

Col-2:范围从0到100。

Col-3:值。

代码语言:javascript
复制
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中的值相加。我该怎么做呢?例如,输出将如下所示:

代码语言:javascript
复制
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

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

发布于 2016-01-01 12:27:32

这是一个基于dplyr的解决方案。让您的数据称为dat

library(dplyr)

dat%>%mutate(quantile = ntile(col2,100))%>%group_by(quantile)%>%summarize(sumValueInInterval = sum(col3))

票数 6
EN

Stack Overflow用户

发布于 2016-01-01 12:27:39

我们可以使用cut创建一个分组变量,在aggregate中使用它来获得'col2‘的sum

代码语言:javascript
复制
df1$group <- as.character(cut(df1$col2, breaks=1:100))
aggregate(col3~group+id, df1, FUN=sum)

或者,可以使用data.table完成此操作

代码语言:javascript
复制
library(data.table)
setDT(df1)[, group:= cut(col2, breaks=1:100)
                ][,list(col3= sum(col3)) ,.(group, id)]

数据

代码语言:javascript
复制
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))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34553491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档