r - 如何使用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)
但是,我不知道如何定位这些“同一日期”记录并用平均值替换它们?
解决方案
使用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
推荐阅读
- regex - 如何计算一组字符的出现次数?
- ibm-cloud-infrastructure - 尝试在 VSI 创建上传递用户元数据时收到错误请求
- ios - 相机无法在 iOS 上运行,getUserMedia 出错
- python - 包装来自外部包的所有类方法
- c# - C# TeamCity:多个 SDK 版本问题
- android - 如何在 FragmentDialog 中设置标题和文本?
- javascript - 如何检查动态命名父级的子属性是否存在?
- jdbc - Hive LLAP 守护程序无法通过 ODBC/JDBC 使用
- vb.net - 自动更新 Click-Once 网络部署应用程序的可靠方法
- html - 如何通过按钮或锚点更改标题