在r中更改数据集每列中的时间

在r中更改数据集每列中的时间,r,dataframe,R,Dataframe,我想按时间合并两个数据集。不幸的是,其中一个数据集来自不同的时区,因此时间列中存在两个小时的差异。有人知道如何将数据集中每列的时间增加两个小时吗 我非常感谢每一个建议:) 时间格式如下所示: 07:31:21这里有一个主要基于regex的解决方案(我相信也有基于包的解决方案可以“读取”时间数据!)。假设您有如下值: x <- c("07:31:21", "12:03:55", "21:07:01") 这就是一系列操作: 使用反

我想按时间合并两个数据集。不幸的是,其中一个数据集来自不同的时区,因此时间列中存在两个小时的差异。有人知道如何将数据集中每列的时间增加两个小时吗

我非常感谢每一个建议:)

时间格式如下所示:


07:31:21

这里有一个主要基于regex的解决方案(我相信也有基于包的解决方案可以“读取”时间数据!)。假设您有如下值:

x <- c("07:31:21", "12:03:55", "21:07:01")
这就是一系列操作:

  • 使用反向参考
    \\1
  • 使用
    as.numeric
  • 添加
    2
  • 如有必要,使用
    stru pad
  • 提取不是小时数的任何内容
  • 将两个单独的子字符串重新粘贴在一起usng
    paste0

您可以使用库
hms
lubridate
功能
with_tz
,该功能可更改时区(参考时区是您所在的地区之一,me:
LC_time=French_Switzerland.1252

as_-hms
转换为hms时间,您可以使用
with_-tz
更改时区(但lubridate将转换为日期,所以是1970年和时间),然后将其转换回
hms
格式以仅包含时间

如果您只想添加固定金额,
hms
以秒为单位,那么您可以添加2*3600秒以添加2小时:

as_hms(as_hms("07:31:21") + 2*3600)

09:31:21
当然,它是矢量化的:

x <- c("07:31:21", "12:03:55", "21:07:01")
x %>%
  as_hms() %>%
  with_tz("America/New_York") %>%
  as_hms()

02:31:21
07:03:55
16:07:01
x%
as_hms()%>%
与_-tz(“美国/纽约”)%%>%
as_hms()
02:31:21
07:03:55
16:07:01

您没有提供示例数据或代码,因此我无法生成示例,但请检查包
data.table的非等联接。
as_hms(as_hms("07:31:21") + 2*3600)

09:31:21
x <- c("07:31:21", "12:03:55", "21:07:01")
x %>%
  as_hms() %>%
  with_tz("America/New_York") %>%
  as_hms()

02:31:21
07:03:55
16:07:01