我有一个使用以下数据框的快速问题。
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 的平均值,我该怎么做?我有困难,因为每个日期的观察量不同非常感谢
在您的示例中,您可以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 ]