将格式不正确的字符串转换为posixct
convert character string with no correct format to posixct
我已经下载了一些气候再分析数据,这些数据从 grib 转换为 cdf 花费了很多时间,现在我终于设法让它在 R 中工作。我的下一个问题是时间是字符向量,类似如下:
tt =c(
"20090101","20090101.25","20090101.5","20090101.75","20090102",
"20090102.25","20090102.5","20090102.75","20090103","20090103.25",
"20090103.5","20090103.75","20090104","20090104.25","20090104.5",
"20090104.75")
其中前四位数字是年,然后是月,然后是日,最后是日的小数部分:yyyymmdd...
如何将其转换为格式为 yyyy-mm-dd 的 posixct 时间 HH:MM?
我会尝试
as.POSIXct(tt,'%Y%m%d')
但由于天数的原因,这在这里无济于事。
最终结果应该是:
tt
[1] "2009-01-01 00:00" "2009-01-01 06:00" "2009-01-01 12:00"
"2009-01-01 18:00" "2009-01-02 00:00"
谁能提出解决方案?
注意:我可以用
完成一半
as.Date(tt, "%Y%m%d")
但不确定如何处理分数
开始于:
tt=c("20090101" , "20090101.25" ,"20090101.5" , "20090101.75" ,"20090102")
转换日期部分,然后提取小数部分并添加为以秒为单位的一天的小数部分:
as.POSIXct(tt,format="%Y%m%d") + (as.numeric(tt) - as.integer(tt))*(60*60*24)
[1] "2009-01-01 00:00:00 GMT" "2009-01-01 06:00:00 GMT"
[3] "2009-01-01 12:00:00 GMT" "2009-01-01 18:00:00 GMT"
[5] "2009-01-02 00:00:00 GMT"
我已经下载了一些气候再分析数据,这些数据从 grib 转换为 cdf 花费了很多时间,现在我终于设法让它在 R 中工作。我的下一个问题是时间是字符向量,类似如下:
tt =c(
"20090101","20090101.25","20090101.5","20090101.75","20090102",
"20090102.25","20090102.5","20090102.75","20090103","20090103.25",
"20090103.5","20090103.75","20090104","20090104.25","20090104.5",
"20090104.75")
其中前四位数字是年,然后是月,然后是日,最后是日的小数部分:yyyymmdd...
如何将其转换为格式为 yyyy-mm-dd 的 posixct 时间 HH:MM?
我会尝试
as.POSIXct(tt,'%Y%m%d')
但由于天数的原因,这在这里无济于事。
最终结果应该是:
tt
[1] "2009-01-01 00:00" "2009-01-01 06:00" "2009-01-01 12:00"
"2009-01-01 18:00" "2009-01-02 00:00"
谁能提出解决方案?
注意:我可以用
完成一半as.Date(tt, "%Y%m%d")
但不确定如何处理分数
开始于:
tt=c("20090101" , "20090101.25" ,"20090101.5" , "20090101.75" ,"20090102")
转换日期部分,然后提取小数部分并添加为以秒为单位的一天的小数部分:
as.POSIXct(tt,format="%Y%m%d") + (as.numeric(tt) - as.integer(tt))*(60*60*24)
[1] "2009-01-01 00:00:00 GMT" "2009-01-01 06:00:00 GMT"
[3] "2009-01-01 12:00:00 GMT" "2009-01-01 18:00:00 GMT"
[5] "2009-01-02 00:00:00 GMT"