从R中的时间向量减去10分钟?

时间:2016-11-18 05:51:03

标签: r open-source

我有一段这样的时间:

"2:43::00 PM"
"2:43:01 PM"
"2:43:05 PM"
"2:43:06 PM"
"2:43:07 PM"

我想转到每一行并从每个时间减去10分钟,以便新列看起来像这样:

"2:33::00 PM"
"2:33:01 PM"
"2:33:05 PM"
"2:33:06 PM"
"2:33:07 PM"

我正在使用

difftime(strptime(data$time[i],format="%H:%M:%S"),strptime("00:10:00",format="%H:%M:%S"))

,但没有显示正确的结果。

我如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

尝试

format(strptime(str1, format = "%I:%M:%S %p") - 10*60, "%I:%M:%S %p")
#[1] "02:33:00 PM" "02:33:01 PM" "02:33:05 PM" "02:33:06 PM" "02:33:07 PM"

数据

str1 <- c("2:43:00 PM", "2:43:01 PM", "2:43:05 PM", "2:43:06 PM", "2:43:07 PM")

答案 1 :(得分:1)

尝试减去时间段时使用as.difftime而非difftime

v <- as.POSIXct("2:43:01 PM", format="%I:%M:%S %p", tz="UTC") - as.difftime(10, units="mins")
#[1] "2016-11-18 14:33:01 UTC"

请注意,R中的时间默认为日期/时间,因此仅追加当前日期。如果需要,您可以再次format()输出:

format(v, "%I:%M:%S %p")
#[1] "02:33:01 PM"