我有一个包含两列的数据集:一个是测量的时间,另一个是值。因为有许多种测量方法,所以“几个”值可能会在一个特定的日期出现。下面的数据是一个示例:
ex_data <-
data.frame(
measuretime = c(
"1994/1/6 15:00",
"1994/1/7 15:00",
"1994/1/7 15:00",
"1994/1/8 15:00"),
value = c(2.4, 1.8, 2.0, 1.4)
)
在“ ex_data”的此示例中,“ 1994/1/7 15:00”具有两个记录:1.8和2.0。我想用它们的平均值(即1.9)代替它们。这样做之后,每个度量时间只有一个记录。那就是:
measuretime Value
1994/1/6 15:00 2.4
1994/1/7 15:00 1.9
1994/1/8 15:00 1.4
这是我尝试过的。我已经将时间标准化了:
library(lubridate)
ex_data$measuretime <- ymd_hm(ex_data$measuretime)
但是,我不知道如何找到这些“相同日期”记录并将其替换为平均值?
答案 0 :(得分:1)
使用sqldf
:
library(sqldf)
sqldf("select measuretime,avg(value) from ex_data group by measuretime")
OR
plyr::ddply(ex_data,~measuretime,summarise,mean=mean(value))
输出:
measuretime avg(value)
1 1994/1/6 15:00 2.4
2 1994/1/7 15:00 1.9
3 1994/1/8 15:00 1.4