如何使用R将具有相同日期的几条记录替换为一条记录

时间:2019-02-11 13:52:46

标签: r

我有一个包含两列的数据集:一个是测量的时间,另一个是值。因为有许多种测量方法,所以“几个”值可能会在一个特定的日期出现。下面的数据是一个示例:

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) 

但是,我不知道如何找到这些“相同日期”记录并将其替换为平均值?

1 个答案:

答案 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