我从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变量?
答案 0 :(得分:2)
显示日期时间值的功能很生硬,不显示午夜时间的分钟,秒或小时:
# 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
形式的“-”),但他也错过了核心问题
答案 1 :(得分:1)
您可以尝试这个as.POSIXct(strptime("2010_10_31_01", "%Y_%m_%d_%H"))
。可能您想使用tz
参数添加时区。如果如您的示例中的小时等于00
,则时间将被自动剥离。使用01
尝试相同的代码。