【问题标题】:Subtracting 10 minutes each from a vector of times in R?从 R 中的时间向量中减去 10 分钟?
【发布时间】:2016-11-18 05:51:02
【问题描述】:

我有一列这样的时间:

"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"))

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

我该如何解决这个问题?

【问题讨论】:

  • 第一个::是错字吗?

标签: r open-source


【解决方案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")

【讨论】:

    【解决方案2】:

    尝试减去时间段时使用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"
    

    【讨论】:

      猜你喜欢
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2012-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多