gpt4 book ai didi

r - 使用 mutate_if 和 force_tz 更改所有时间戳的时区

转载 作者:行者123 更新时间:2023-11-29 12:43:02 24 4
gpt4 key购买 nike

我正在使用 RPostgreSQL 从 Postgres 数据库中提取数据,它在导入 R 时将时间戳转换为系统时区。因此,导入后我想设置所有的时区UTC 时间戳。我想我可以使用 dplyrlubridate 优雅地做到这一点,就像这样:

df %>%
mutate_if(lubridate::is.POSIXct, lubridate::force_tz(., tzone='UTC')) -> df

但这会抛出

Error in UseMethod("as.fun_list") : 
no applicable method for 'as.fun_list' applied to an object of class "data.frame"

所以我显然错误地使用了mutate_if()

最佳答案

这个有效:

df %>%
dplyr::mutate_if(lubridate::is.POSIXct,
function(x) lubridate::force_tz(x, tzone='UTC')) -> df

这个类似的 purrr 解决方案也是如此:

df %>%
purrr::map_if(lubridate::is.POSIXct,
~ lubridate::force_tz(., tzone='UTC')) %>%
as_data_frame -> df

这是否尽可能优雅?

关于r - 使用 mutate_if 和 force_tz 更改所有时间戳的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39469847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com