如何在R中将日期和时间列移动6小时?

时间:2016-04-22 07:45:10

标签: r excel

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

2 个答案:

答案 0 :(得分:0)

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

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

library(lubridate)

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

希望这有帮助

答案 1 :(得分:0)

使用基数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

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