如何在R的数据帧中更改ISO8601格式的时区?
我有一个很大的数据框,其中有一列iso8601格式的日期和时间(YYYY/MM/DDTHH:MM:SSz)。我正在尝试添加一个新列并更改时区。下面是我正在使用的代码行如何在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:
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"
dfstrtime(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"