【问题标题】:taking the average of POSIX times in Y-m-d H:M:S format以 Y-m-d H:M:S 格式取 POSIX 时间的平均值
【发布时间】:2016-03-10 09:09:17
【问题描述】:

我有一个 POSIXct 格式的时间列表 ("%Y-%m-%d %H:%M:%S", tz = "EST") 我想取平均值:

> 数据 时间 1 2015-10-08 17:20:17 2 2015-10-08 17:16:29 3 2015-10-08 17:28:34 4 2015-10-08 17:20:54 5 2015-10-08 17:47:37 6 2015-10-08 16:44:18 7 2015-10-08 17:36:42 8 2015-10-08 17:44:00 9 2015-10-08 17:54:36 10 2015-10-08 17:45:09 11 2015-10-08 17:50:31 12 2015-10-08 17:31:18 13 2015-10-08 17:11:28 14 2015-10-08 16:37:40 15 2015-10-08 17:57:28 16 2015-10-08 16:54:24 17 2015-10-08 17:11:46 18 2015-10-08 16:55:32 19 2015-10-08 17:31:29 20 2015-10-08 17:44:44 21 2015-10-08 16:51:12 22 2015-10-08 16:41:36 23 2015-10-08 17:20:50 24 2015-10-08 17:30:37 25 2015-10-08 12:32:14 26 2015-10-08 17:30:27 27 2015-10-08 17:21:11 28 2015-10-08 17:23:58 29 2015-10-08 17:10:19 30 2015-10-08 16:58:50 31 2015-10-08 17:01:13 32 2015-10-08 16:58:25 33 2015-10-08 17:33:15 34 2015-10-08 16:35:51 35 2015-10-08 17:48:00 36 2015-10-08 17:03:43 37 2015-10-08 17:09:46 38 2015-10-08 17:14:50 39 2015-10-08 17:26:35 40 2015-10-08 17:27:33 41 2015-10-08 17:45:03 42 2015-10-08 17:20:20 43 2015-10-08 17:32:20 44 2015-10-08 16:32:56 45 2015-10-08 17:05:29 46 2015-10-08 17:01:46 > 输入(数据) 结构(列表(时间 = 结构(c(1444342817.5、1444342589、1444343314、 1444342854、1444344457.5、1444340658、1444343802、1444344240、 1444344876、1444344309、1444344631.5、1444343478.5、1444342288.5、 1444340260、1444345048.5、1444341264.5、1444342306、1444341332、 1444343489、1444344284、1444341072、1444340496.5、1444342850.5、 1444343437, 1444325534, 1444343427, 1444342871, 1444343038, 1444342219, 1444341530、1444341673、1444341505、1444343595、1444340151、1444344480.5、 1444341823.5、1444342186、1444342490.5、1444343195.5、1444343253.5、 1444344303、1444342820.5、1444343540、1444339976.5、1444341929.5、 1444341706.5), class= c("POSIXct", "POSIXt"), tzone = "")), .Names = "time", row.names = c(NA, -46L), class= "data.frame")

我尝试使用以下代码取平均值,但这不起作用:

tapply(data$time,mean)

【问题讨论】:

  • tapply 需要一个分组变量。你的预期输出是什么?如果是整列,我得到mean(data[,1])#[1] "2015-10-09 03:42:14 IST"
  • 不清楚应该如何计算平均值。最简单的方法是取最早和最新观测值之间的中点。观察次数是否应计入平均计算的加权?举个例子:17:20 到 17:40 之间的时间跨度应该被认为比包含更少或更多观察的其他 20 分钟间隔更重要还是更不重要?

标签: r time posix


【解决方案1】:

我怀疑这会给出您正在寻找的结果。它提供了记录列表中观察的平均时间:

as.POSIXct(mean(as.numeric(data$time)), origin='1970-01-01',tz="EST")
#[1] "2015-10-08 17:12:14 EST"

这个想法是取时间戳的平均值,通过使用as.numeric()POSIX 值(返回)转换为时间戳。这些时间戳的数值平均值可以通过简单地使用mean() 来计算。之后,平均时间戳被转换回带有as.POSIXct() 的时间/日期格式。结果取决于时区的选择。


如果您不必担心时区,您可以简单地使用

mean.POSIXct(data$time)

甚至只是mean(data$time)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-25
    • 2020-08-31
    • 2015-10-21
    • 2022-01-03
    • 2016-11-06
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多