r - 使用 dplyr 语法和 attr 函数转换时区

标签 r dplyr timezone attr

我尝试仅使用 dplyr 语法和 attr 函数来转换时区,而不加载其他包。

代表:

dt1 <- as.POSIXct("2010-01-01 08:00:00", tz = "GMT")
dt <- seq(dt1, length = 10, by = "1 day")

我可以使用 attr 转换为正确的时区:

attr(dt, "tzone")
[1] "GMT"

attr(dt, "tzone") <- "Australia/Sydney" # convert to intended tz

我感兴趣的是如何将 attr 合并到 dplyr::mutate 语法中?

最佳答案

就可链式解决方案而言(我认为这就是您所说的“使用 dplyr 语法”的意思),您可以使用 .POSIXct ,如

library(magrittr)
dt %>% .POSIXct(tz = "Australia/Sydney")
#[1] "2010-01-01 19:00:00 AEDT" "2010-01-02 19:00:00 AEDT"
#[3] "2010-01-03 19:00:00 AEDT" "2010-01-04 19:00:00 AEDT"
#[5] "2010-01-05 19:00:00 AEDT" "2010-01-06 19:00:00 AEDT"
#[7] "2010-01-07 19:00:00 AEDT" "2010-01-08 19:00:00 AEDT"
#[9] "2010-01-09 19:00:00 AEDT" "2010-01-10 19:00:00 AEDT"

这是一个最小的 dplyr::mutate 示例

data.frame(dt = dt) %>%
    mutate(dt_Australia = .POSIXct(dt, tz = "Australia/Sydney"))
#                    dt        dt_Australia
#1  2010-01-01 08:00:00 2010-01-01 19:00:00
#2  2010-01-02 08:00:00 2010-01-02 19:00:00
#3  2010-01-03 08:00:00 2010-01-03 19:00:00
#4  2010-01-04 08:00:00 2010-01-04 19:00:00
#5  2010-01-05 08:00:00 2010-01-05 19:00:00
#6  2010-01-06 08:00:00 2010-01-06 19:00:00
#7  2010-01-07 08:00:00 2010-01-07 19:00:00
#8  2010-01-08 08:00:00 2010-01-08 19:00:00
#9  2010-01-09 08:00:00 2010-01-09 19:00:00
#10 2010-01-10 08:00:00 2010-01-10 19:00:00

关于r - 使用 dplyr 语法和 attr 函数转换时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58637081/

相关文章:

Java日期时间格式转换

java - 如何通过单元测试测试时区方法?

c# - 您将如何生成可重复的加密 key ?

r - 如何在R中简洁地表达这个和?

r - 如何删除 R Markdown 生成的 HTML 文件左侧的 "padding"

R 每隔一列 reshape 数据框

r - 在 R 中查找每个分组的新观察值

r - 在 xtable 中处理 Latex 反斜杠

r - 将刻度线标签更改为 plotly 中的特定字符串

r - 循环并为子组寻找最近的数据点