1

我有一个使用以下数据框的快速问题。

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 的平均值,我该怎么做?我有困难,因为每个日期的观察量不同非常感谢

4

1 回答 1

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 ]
于 2013-04-26T14:32:33.950 回答