【问题标题】:How to shift date and time column by 6 hours in R?如何在 R 中将日期和时间列移动 6 小时?
【发布时间】:2016-04-22 07:45:10
【问题描述】:

我有一个遵循 24 小时格式的日期和时间列。现在我希望它移动 6 小时,这样当天的早上 6 点变成 00:00,第二天早上 6 点结束。在 excel 中,如果我们从日期列中减去 0.25,它会直接将日期移动 6 小时。但类似的功能似乎在 R 中不起作用。如何在 R 中实现这一点?

【问题讨论】:

  • 你能分享一些你的数据吗,例如使用dput粘贴一些数据(作为你的例子reproducible)?
  • 日期时间 2/10/2016 19:18 2/10/2016 19:15 2/10/2016 19:12 2/10/2016 19:09 2/10/2016 19:06 2 /10/2016 19:03 更新 2/10/2016 13:18 2/10/2016 13:15 2/10/2016 13:12 2/10/2016 13:09 2/10/2016 13:06 2/ 10/2016 13:03

标签: r excel


【解决方案1】:

您应该提供有关您的问题的更多信息,例如您正在使用的数据。

要使用 R 复制它,您可以使用 lubridate 包:

library(lubridate)

new_time <- time - hms("06:00:00")

希望对你有帮助

【讨论】:

    【解决方案2】:

    使用基础 R 的解决方案。默认情况下算术运算会增加秒数,因此:

    now <- Sys.time() #gets the current time
    now
      "2016-04-22 09:52:21 CEST"
    now + 6*3600      
      "2016-04-22 15:52:21 CEST"
    

    有了你的数据,你可以试试,strptime:

    df <- read.table(text="
    DateTime
    2/10/2016 19:18
    2/10/2016 19:15
    2/10/2016 19:12
    2/10/2016 19:09
    2/10/2016 19:06
    2/10/2016 19:03", sep=";", h=T)
    
    df
    DateTime
    1 2/10/2016 19:18
    2 2/10/2016 19:15
    3 2/10/2016 19:12
    4 2/10/2016 19:09
    5 2/10/2016 19:06
    6 2/10/2016 19:03
    df$NewTime <- strptime(as.character(df$DateTime), format="%d/%m/%Y %H:%M") 6*3600
    
    df
    DateTime             NewTime
    1 2/10/2016 19:18 2016-10-03 01:18:00
    2 2/10/2016 19:15 2016-10-03 01:15:00
    3 2/10/2016 19:12 2016-10-03 01:12:00
    4 2/10/2016 19:09 2016-10-03 01:09:00
    5 2/10/2016 19:06 2016-10-03 01:06:00
    6 2/10/2016 19:03 2016-10-03 01:03:00
    

    您可以在read.table 中使用stringsAsFactors = FALSE 删除as.character 步骤。 它解决了你的问题吗?

    【讨论】:

      猜你喜欢
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      • 2020-12-07
      • 2021-11-17
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多