【发布时间】:2014-05-08 17:03:56
【问题描述】:
我在 R 中有一堆时间戳:
set.seed(42)
t <- sample(1368104620:1399593658, 1000)
t <- as.POSIXlt(t, origin="1970-01-01")
我想知道每个时间戳与一天中的固定时间的距离(例如,时间戳与凌晨 5 点的距离?[今天、昨天或明天早上 5 点])。最大距离应为 12。
h <- t$hour + t$min/60 + t$sec/3600
h_fixed <- 5
执行此操作的一种方法是将当前小时与固定小时、昨天的固定小时和今天的固定小时进行比较。
d1 <- pmin(abs(h-h_fixed),abs(h-h_fixed+24),abs(h-h_fixed-24))
plot(h, d1)
另一种稍微花哨的方法如下:
d2 <- pmin((h_fixed-h) %% 24, (h-h_fixed) %% 24)
plot(h, d2)
all.equal(d1, d2)
他们是更优雅的方法吗?我觉得我应该能够在不使用 pmin 的情况下解决这个问题,但我没有找到答案。
【问题讨论】:
-
difftime很不错。