Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-计算时间变量平均值(DateTime)的平均值_R_Datetime_Lubridate - Fatal编程技术网

R-计算时间变量平均值(DateTime)的平均值

R-计算时间变量平均值(DateTime)的平均值,r,datetime,lubridate,R,Datetime,Lubridate,这是我的数据集的一个示例: > 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

这是我的数据集的一个示例:

> 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)  
然而,当我试图计算平均值时,我没有结果:

> mean(test$hourMin)
[1] 0

这应该很简单,但我不知道怎么做,因为我是初学者。我将感谢任何帮助。谢谢,这真的不是很优雅,但我现在找到的唯一方法是将日期组件更改为同一天,并计算结果的平均值。使用
润滑油

time <- df$timeMin
time <- update(time, year=2000, month=1, mday=1)
mean(time)
# [1] "2000-01-01 12:50:00 CET"

时间我在计算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"
库(data.table)

时间表什么给了类(timeMin)
?>类(test$timeMin)[1]“POSIXct”“POSIXt”>类(test$hourMin)[1]“Period”attr(,“package”)[1]“lubridate”您的解决方案似乎适用于我的整个数据集
>平均值(daily$hourMin,na.rm=TRUE)[1]“2000-01-01-01 14:30:45 UTC”
然而,当我要求“治疗”的平均值时“使用tapply它会给我一个未格式化的结果,我不知道如何处理它(每日$hourMin,每日$treatment,FUN=mean,na.rm=TRUE)946736754 946737321
请问,我怎么能通过治疗知道平均亚组?你的解决方案非常聪明。但是,结果在我看来不太符合逻辑,因为值的范围在12:30到13:45之间,因此平均值应该在这两者之间。你的结果是00:50,所以可能格式错误,而且确实如此平均值12:50。我说得对吗?此外,当我试图通过变量“治疗”(即环境和高浓度)对平均值进行分组时,结果是无格式的,我无法快速阅读(每日$meanTimeMin,每日$treatment,乐趣=平均值)1372714379 1372714379我没有检查答案,但它看起来是正确的。例如,1,3,5,7的平均值是4,而不是奇数。如果只取HHMI分量的平均值,并删除ddmmyy分量,则应该得到1300左右的值,而不是0100。您的分组平均值可能是数字在R的第0个数据(1970年1月1日,请重新检查)后的秒数,因此您在这种情况下的平均值可以计算为
meantimin
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"