我使用了raster
和netCDF
包来导入历史温度数据。但是,日期列的日期格式很奇怪,R
抱怨不是标准日期格式。我使用lubricate
和r base
来进行日期格式强制转换,但是仍然不能解决这个问题。这是我的部分数据的样子:
> head(dat)
date tmax tmin
1 X1980.01.01 1.91 -0.04
2 X1980.01.02 0.77 -1.00
3 X1980.01.03 0.01 -4.37
4 X1980.01.04 3.08 -3.13
5 X1980.01.05 4.69 2.57
6 X1980.01.06 5.08 2.86
> class(dat$date)
[1] "character"
我的dat$date
列变成了character
而不是Date
。我尝试gsub
来摆脱X
字符,但我没有正确。我也尝试过as.Date
和as_datetime
,但仍然没有正确的日期格式。是否有任何快速解决方案可以将上述日期格式转换为标准格式。
头(napa $ date)
任何想法或任何快速解决方案?
答案 0 :(得分:2)
在评论中回答了问题。这是不同的方法。
d <- c("X1980.01.01", "X1980.01.02")
最简洁的
as.Date(d, "X%Y.%m.%d")
步骤:
e <- gsub("X", "", d)
f <- as.Date(e, "%Y.%m.%d")
f
#[1] "1980-01-01" "1980-01-02"
请注意
class(f)
# "Date"
变化形式:
e <- gsub("X", "", d)
f <- gsub("\\.", "-", e)
as.Date(f)
#[1] "1980-01-01" "1980-01-02"
或与ymd
包中的lubridate
一起
e <- gsub("X", "", d)
lubridate::ymd(e)
#[1] "1980-01-01" "1980-01-02"