将字符日期转换为 POSIXct
covert character date to POSIXct
我从 RNCEP 包中导入了一些数据,其中包含日期时间戳(UTC 格式)作为字符:
> head(df.weather[1])
datetime
1 2018_06_01_00
2 2018_06_01_00
3 2018_06_01_00
4 2018_06_01_00
5 2018_06_01_00
6 2018_06_01_00
年月日小时用下划线分隔。
我想将这些日期更改为 POSIXct,我可以使用以下方法获取日期:
df.weather$date<-as.POSIXct(
str_replace_all(df.weather$datetime, "_", "-"),
format="%Y-%m-%d")
head(df.weather[11])
date
1 2018-06-01
2 2018-06-01
3 2018-06-01
4 2018-06-01
5 2018-06-01
6 2018-06-01
但是,如果我将格式更改为“%Y-%m-%d %H”或“%Y-%m-%d %H:%M”,我会得到以下信息:
date
1 <NA>
2 <NA>
3 <NA>
4 <NA>
5 <NA>
6 <NA>
如何调整我的代码以将小时信息放入 POSIXct 变量?
你可以试试这个 as.POSIXct(strptime("2010_10_31_01", "%Y_%m_%d_%H"))
。可能您想使用 tz
参数添加时区。如果小时等于 00
,如您的示例所示,时间将自动删除。使用 01
.
尝试相同的代码
显示日期时间值的函数存在不打印午夜时间的分钟、秒或小时的错误:
# First build a test vector of character values
times <- scan(text="2018_06_01_00
2018_06_01_00
2018_06_01_00
2018_06_01_00
2018_06_01_00
2018_06_01_00", what="")
#Read 6 items
# Now run your code
realTimes<-as.POSIXct(
str_replace_all(times, "_", "-"),
format="%Y-%m-%d")
realTimes
#[1] "2018-06-01 PDT" "2018-06-01 PDT" "2018-06-01 PDT" "2018-06-01 PDT"
#[5] "2018-06-01 PDT" "2018-06-01 PDT"
dput(realTimes)
structure(c(1527836400, 1527836400, 1527836400, 1527836400, 1527836400,
1527836400), class = c("POSIXct", "POSIXt"), tzone = "")
@ANG 的评论很有用(建议使用 format= "%Y_%m_%d_%H" 而不是更笨拙的 str_replace
-ment with "-")但他也错过了中心问题。
我从 RNCEP 包中导入了一些数据,其中包含日期时间戳(UTC 格式)作为字符:
> head(df.weather[1])
datetime
1 2018_06_01_00
2 2018_06_01_00
3 2018_06_01_00
4 2018_06_01_00
5 2018_06_01_00
6 2018_06_01_00
年月日小时用下划线分隔。
我想将这些日期更改为 POSIXct,我可以使用以下方法获取日期:
df.weather$date<-as.POSIXct(
str_replace_all(df.weather$datetime, "_", "-"),
format="%Y-%m-%d")
head(df.weather[11])
date
1 2018-06-01
2 2018-06-01
3 2018-06-01
4 2018-06-01
5 2018-06-01
6 2018-06-01
但是,如果我将格式更改为“%Y-%m-%d %H”或“%Y-%m-%d %H:%M”,我会得到以下信息:
date
1 <NA>
2 <NA>
3 <NA>
4 <NA>
5 <NA>
6 <NA>
如何调整我的代码以将小时信息放入 POSIXct 变量?
你可以试试这个 as.POSIXct(strptime("2010_10_31_01", "%Y_%m_%d_%H"))
。可能您想使用 tz
参数添加时区。如果小时等于 00
,如您的示例所示,时间将自动删除。使用 01
.
显示日期时间值的函数存在不打印午夜时间的分钟、秒或小时的错误:
# First build a test vector of character values
times <- scan(text="2018_06_01_00
2018_06_01_00
2018_06_01_00
2018_06_01_00
2018_06_01_00
2018_06_01_00", what="")
#Read 6 items
# Now run your code
realTimes<-as.POSIXct(
str_replace_all(times, "_", "-"),
format="%Y-%m-%d")
realTimes
#[1] "2018-06-01 PDT" "2018-06-01 PDT" "2018-06-01 PDT" "2018-06-01 PDT"
#[5] "2018-06-01 PDT" "2018-06-01 PDT"
dput(realTimes)
structure(c(1527836400, 1527836400, 1527836400, 1527836400, 1527836400,
1527836400), class = c("POSIXct", "POSIXt"), tzone = "")
@ANG 的评论很有用(建议使用 format= "%Y_%m_%d_%H" 而不是更笨拙的 str_replace
-ment with "-")但他也错过了中心问题。