我正在寻找关于如何使用aggregate
和R.计算手段汇总数据
说死简单的例子,我有以下的数据帧:
A B
100 85
200 95
300 110
400 105
而且我想计算平均值的一些范围,结果如下:
RANGE MEAN
100-200 90
300-400 107.5
我怎么会去这样做,cast()
或aggregate()
?
我正在寻找关于如何使用aggregate
和R.计算手段汇总数据
说死简单的例子,我有以下的数据帧:
A B
100 85
200 95
300 110
400 105
而且我想计算平均值的一些范围,结果如下:
RANGE MEAN
100-200 90
300-400 107.5
我怎么会去这样做,cast()
或aggregate()
?
假设你的数据帧被命名为 “X”:
aggregate(x$B, list(cut(x$A, breaks=c(0, 200, 400))), mean)
# Group.1 x
# 1 (0,200] 90.0
# 2 (200,400] 107.5
随着 “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
对于更好看的输出:'aggregate(list(mean = df $ B),list(range = cut(df $ A,breaks = c(0,200,400))),mean)' – A5C1D2H2I1M1N2O1R2T1
以下是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
>
或者相同与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
你的问题不清楚。你想聚合什么变量(你的意思是“某些范围”)? –
哦,忘了改变第二张表的标题 - 现在修好了。 – Johnny