首页 > 解决方案 > 如何使用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) 

但是,我不知道如何定位这些“同一日期”记录并用平均值替换它们?

标签: r

解决方案


使用sqldf

library(sqldf)
sqldf("select measuretime,avg(value) from ex_data group by measuretime")

或者

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

推荐阅读