我使用以下数据框快速提问。
x <- c("2012-01-01","2012-01-01","2012-01-01","2012-01-02","2012-01-02","2012-01-03","2012-01-03")
y <- c(1,2,3,4,5,6,7)
data.frame(x,y)
现在我想取x中指定的每个日期的y的平均值,我该怎么做?我有困难因为每个日期的观察量不同 非常感谢
答案 0 :(得分:2)
在您的示例中,您可以使用aggregate
函数,如下所示:
df <- data.frame(x,y)
aggregate( y ~ x , df , mean )
# x y
#1 2012-01-01 2.0
#2 2012-01-02 4.5
#3 2012-01-03 6.5
但这是许多方法之一,你可以做到这一点,最佳将取决于你的真实数据的结构。
data.table解决方案可能是:
require( data.table )
DT <- data.table(df)
DT[, mean(y) , by = x ]
# x V1
#1: 2012-01-01 2.0
#2: 2012-01-02 4.5
#3: 2012-01-03 6.5
或者,如果您想添加一个包含您可以使用的平均值的新列:
DT[ , "Mean" := mean(y) , by = x ]