【发布时间】:2019-11-19 00:36:28
【问题描述】:
我在计算数据中 2 个变量的平均值时遇到问题。我收集了如下所示的温度和速度。我想最小化数据并且只有hourly 读数(没有分钟)。我想根据time 和day 对每个id 取temperature 和speed 的平均值。
ID temp Speed Day Hour Minute Latitude Longitude
1 3 20 1 11 10 38.9294865 -77.2479055
1 5 25 1 11 30 38.9294865 -77.2479055
1 5 30 1 12 12 38.9294865 -77.2479055
1 6 20 1 12 40 38.9294865 -77.2479055
2 1 40 2 11 05 38.9294771 -77.2478712
2 5 30 2 11 50 38.9294771 -77.2478712
2 2 20 2 12 30 38.9294771 -77.2478712
2 8 10 2 12 40 38.9294771 -77.2478712
我想要的数据如下所示:
ID temp Speed Day Hour Minute Latitude Longitude
1 4 22.5 1 11 00 38.9294865 -77.2479055
1 5.5 25 1 12 00 38.9294865 -77.2479055
2 3 30 2 11 00 38.9294771 -77.2478712
2 5 15 2 12 00 38.9294771 -77.2478712
我想过创建一个这样的小时和分钟列:
Data$HM <- as.date(with(Data, paste(Hour, Minute ,sep=":")), "%H:%M")
然后根据我正在考虑尝试此代码的新列:
AvrgData<- aggregate(Data[, 2:3], list(Data$HM), mean)
但是我的代码不正确。 任何建议将不胜感激! 我浏览了这些链接,但仍然无法获得我想要的结果。
How to average columns based on ID in R?
Merge three different columns into a date in R
谢谢
【问题讨论】:
-
对于初学者来说,
as.date不是一个函数 - 试试as.Date。完成后,检查Data$HM的结果 - R 中的日期不存储小时和分钟。尝试as.POSIXct来获取日期/时间。或者根本不用担心日期转换,只需使用paste。