如何在R的数据帧中更改ISO8601格式的时区?

如何在R的数据帧中更改ISO8601格式的时区?,r,timezone,iso8601,R,Timezone,Iso8601,我有一个很大的数据框,其中有一列iso8601格式的日期和时间(YYYY/MM/DDTHH:MM:SSz)。我正在尝试添加一个新列并更改时区。下面是我正在使用的代码行 df <-cbind(as.POSIXct(df$DateTime, tz = "America/Chicago","%Y-%m-%d %H:%M:%S"),df) 输出是 df$DateTime[1:5] [1] "2018/06/01T05:01:13z" "2018/06/01T05:04:

我有一个很大的数据框,其中有一列iso8601格式的日期和时间(YYYY/MM/DDTHH:MM:SSz)。我正在尝试添加一个新列并更改时区。下面是我正在使用的代码行

    df <-cbind(as.POSIXct(df$DateTime, tz = "America/Chicago","%Y-%m-%d %H:%M:%S"),df) 
输出是

    df$DateTime[1:5]
    [1] "2018/06/01T05:01:13z" "2018/06/01T05:04:11z" "2018/06/01T05:05:31z" "2018/06/01T05:06:51z" "2018/06/01T05:08:11z"
现在,当我按照建议使用strtime时,我的下一行代码如下

    df1<-as.data.frame(c(strptime(df$DateTime,format='%Y/%m/%dT%H:%M:%S',tz="America/Chicago"),df))

您可以使用
lubridate
包将字符向量转换为
datetime
对象:

df <- data.frame(DateTime_str = c("2018/06/01T05:01:13z",
       "2018/06/01T05:04:11z" ,
       "2018/06/01T05:05:31z",
       "2018/06/01T05:06:51z",
       "2018/06/01T05:08:11z"))

library(lubridate)
df$DateTime <- as_datetime( gsub("z", "", df$DateTime_str), tz = "America/Chicago")
df$DateTime
# [1] "2018-06-01 00:01:13 CDT" "2018-06-01 00:04:11 CDT" "2018-06-01 00:05:31 CDT" "2018-06-01 00:06:51 CDT" "2018-06-01 00:08:11 CDT"

df
strtime(df$DateTime,'%Y/%m/%dT%H:%m:%S')
如果需要更好的帮助,请提供一个示例日期,
df$DateTime
没有它就没有任何意义。
   Error in as.POSIXct.default(X[[i]], ...) : 
   do not know how to convert 'X[[i]]' to class “POSIXct”
df <- data.frame(DateTime_str = c("2018/06/01T05:01:13z",
       "2018/06/01T05:04:11z" ,
       "2018/06/01T05:05:31z",
       "2018/06/01T05:06:51z",
       "2018/06/01T05:08:11z"))

library(lubridate)
df$DateTime <- as_datetime( gsub("z", "", df$DateTime_str), tz = "America/Chicago")
df$DateTime
# [1] "2018-06-01 00:01:13 CDT" "2018-06-01 00:04:11 CDT" "2018-06-01 00:05:31 CDT" "2018-06-01 00:06:51 CDT" "2018-06-01 00:08:11 CDT"