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