我有一个包含日期时间字符串列的数据框:
library(tidyverse)
library(lubridate)
testdf = data_frame(
mytz = c('Australia/Sydney', 'Australia/Adelaide', 'Australia/Perth'),
mydt = c('2018-01-17T09:15:00', '2018-01-17T09:16:00', '2018-01-17T09:18:00'))
testdf
# A tibble: 3 x 2
# mytz mydt
# <chr> <chr>
# 1 Australia/Sydney 2018-01-17T09:15:00
# 2 Australia/Adelaide 2018-01-17T09:16:00
# 3 Australia/Perth 2018-01-17T09:18:00
我希望将这些日期时间字符串转换为带有各自时区的POSIX日期时间对象:
testdf %>% mutate(mydt_new = ymd_hms(mydt, tz = mytz))
在 mutate_impl(.data, dots) 中出现错误: 评估时出现错误:
tz
参数必须是单个字符字符串。 此外:警告消息: 在 if (tz != "UTC") { 中: 条件长度 > 1,只有第一个元素将被使用。
如果我在不带时区的情况下使用 ymd_hms
并将其传递到 force_tz
中,我会得到相同的结果。我们能否得出结论,lubridate 在时区操作方面不支持任何形式的向量化?
testdf %>% rowwise %>% mutate(mydt_new = ymd_hms(mydt, tz = mytz))
? - jazzurrorowwise
。 - jimjamslamtibble
的输出显示出了新列在Australia/Perth
,尽管我处于Australia/Sydney
。我想知道这样的显示是否是随意的。 - jimjamslam