这是我的数据集的一个示例:
> head(daily[,c(6,7)])->test
> head(test)
timeMin min
316 2013-05-02 13:45:00 3239
317 2013-05-03 12:30:00 3260
318 2013-05-04 12:30:00 3165
319 2013-05-05 12:30:00 3404
320 2013-05-06 12:30:00 3514
321 2013-05-07 13:15:00 3626
我需要卑鄙(timeMin),以便了解事件通常发生的一天(小时:分钟)的时间。我试过这个:
library(lubridate)
> test$hourMin<-paste(hour(test$timeMin),minute(test$timeMin),sep=":”)
> test$hourMin <- hm(test$hourMin)
我得到了这个:
> head(test)
timeMin min hourMin
316 2013-05-02 13:45:00 3239 13H 45M 0S
317 2013-05-03 12:30:00 3260 12H 30M 0S
318 2013-05-04 12:30:00 3165 12H 30M 0S
319 2013-05-05 12:30:00 3404 12H 30M 0S
320 2013-05-06 12:30:00 3514 12H 30M 0S
321 2013-05-07 13:15:00 3626 13H 15M 0S
但是,当我尝试计算平均值时,我没有结果:
> mean(test$hourMin)
[1] 0
它应该是直截了当的,但我不知道该怎么做,因为我是初学者。我将不胜感激任何帮助。谢谢
答案 0 :(得分:1)
它真的不优雅,但我现在找到的唯一方法是将日期组件更改为同一天并计算结果的平均值。使用lubridate
:
time <- df$timeMin
time <- update(time, year=2000, month=1, mday=1)
mean(time)
# [1] "2000-01-01 12:50:00 CET"
希望有人会提供更好的东西......
答案 1 :(得分:0)
我正在计算2013年1月1日午夜之后的秒数,然后采取平均值并将其添加回2013年1月1日午夜。
我想有些软件包只能通过一个命令执行此操作,但如果您像我一样,不希望过多依赖软件包,那么此解决方案应该适合您。
library(data.table)
timetable <- data.table(TimeMin = c("2013-05-02 13:45:00",
"2013-05-03 12:30:00",
"2013-05-04 12:30:00",
"2013-05-05 12:30:00",
"2013-05-06 12:30:00",
"2013-05-07 13:15:00")
)
timetable <- timetable[, TimePastMin :=
difftime(
"2013-01-01 00:00:00",
TimeMin,
units = "secs"
)
]
meanTimePastMin <- mean(timetable[, TimePastMin])
meanTimeMin <- strptime("2013-01-01 00:00:00", "%Y-%m-%d %H:%M:%S") - meanTimePastMin
meanTimeMin
# "2013-05-05 00:50:00 IST"