在R中聚合数据

在R中聚合数据,r,aggregate,R,Aggregate,我正在寻找一个非常简单的例子,说明如何使用聚合并计算R中的均值 比如,我有以下数据框: A B 100 85 200 95 300 110 400 105 我想计算一些范围的平均值,结果如下: RANGE MEAN 100-200 90 300-400 107.5 我将如何进行此操作,cast()或aggregate()?这里是使用aggregate的一个基本示例 > foo = data.frame(A=c(1

我正在寻找一个非常简单的例子,说明如何使用
聚合
并计算R中的均值

比如,我有以下数据框:

A      B
100    85
200    95
300    110
400    105
我想计算一些范围的平均值,结果如下:

RANGE         MEAN
100-200       90
300-400       107.5

我将如何进行此操作,
cast()
aggregate()

这里是使用
aggregate
的一个基本示例

> foo = data.frame(A=c(100,200,300,400),B=c(85,95,110,105))
> aggregate(foo$B,by=list(foo$A<250),FUN=mean)
  Group.1     B
1   FALSE 107.5
2    TRUE  90.0
> 
foo=data.frame(A=c(100200300400),B=c(85,95110105)) >聚合(foo$B,按=列表(foo$A
假设您的数据帧名为“x”:


使用“data.table”,您可以执行以下操作:

library(data.table)
as.data.table(x)[, .(RANGE = mean(B)), by = .(MEAN = cut(A, c(0, 200, 400)))]
#         MEAN RANGE
# 1:   (0,200]  90.0
# 2: (200,400] 107.5

或与
cut
tapply

 foo <- data.frame(A=c(100,200,300,400),B=c(85,95,110,105))
 tapply(foo$B, cut(foo$A, breaks=seq(0, 400, 200)), mean)
  (0,200] (200,400] 
     90.0     107.5 

foo您的问题还不清楚。您希望在哪个变量上进行聚合(您所说的“某些范围”是什么意思)?哦,忘记更改第二个表的标题-现在已修复。要获得更美观的输出:
aggregate(list(mean=df$B),list(range=cut(df$A,breaks=c(0200400)),mean)
 foo <- data.frame(A=c(100,200,300,400),B=c(85,95,110,105))
 tapply(foo$B, cut(foo$A, breaks=seq(0, 400, 200)), mean)
  (0,200] (200,400] 
     90.0     107.5