You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从字符型日期时间列与时区列创建datetime对象?

解决方法

问题出在as.POSIXct()的tz参数不支持向量输入,即便用rowwise()也无法实现逐行传递不同时区值。以下是两种可行的解决方式:

方法1:Base R 逐行处理

使用mapply()实现逐行匹配时间字符串和对应时区:

data_frame$start_in_zone <- mapply(function(dt_str, tz) {
  as.POSIXct(dt_str, tz = tz)
}, data_frame$start, data_frame$start_timezone)

方法2:Tidyverse + Lubridate 更简洁实现

借助purrr::map2()逐行处理,结合lubridate的时间处理函数更直观:

library(tidyverse)
library(lubridate)

data_frame <- data_frame %>%
  mutate(start_in_zone = map2(start, start_timezone, ~force_tz(ymd_hms(.x), tzone = .y)))

验证结果

可以查看转换后每个值的时区是否正确:

# 查看第4条记录的时区
attr(data_frame$start_in_zone[4], "tzone")
# 输出:"Indian/Maldives"

内容的提问来源于stack exchange,提问作者bountan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:35:35