我有一些年月形式的数据,我想格式化ggplot
中的图表。
date <- c("2016-03", "2016-04", "2016-05", "2016-06", "2016-07", "2016-08",
"2016-09", "2016-10", "2016-11", "2016-12")
我使用的是parsedate::parse_date
,但自从更新R后它就不再有效了。
我看了
as.yearmon
工作正常,但不会格式化为ggplot
所需的POSIXct。其他格式如as.POSIXct
和strptime
正在提供NAs或错误。
注意:我不介意将本月的第一天添加到“year-mo”格式。
答案 0 :(得分:4)
这是一个常见问题解答:日期由日,月和年组成。你错过了一个部分。因此,通过添加一个日,比如'-01',您可以强加丢失的字符串结构并进行解析。或者您可以使用更宽容的解析器:
R> library(anytime)
R> anydate("2017-06")
[1] "2017-06-01"
R>
也适用于您的数据:
R> date
[1] "2016-03" "2016-04" "2016-05" "2016-06"
[5] "2016-07" "2016-08" "2016-09" "2016-10"
[9] "2016-11" "2016-12"
R> anydate(date)
[1] "2016-03-01" "2016-04-01" "2016-05-01"
[4] "2016-06-01" "2016-07-01" "2016-08-01"
[7] "2016-09-01" "2016-10-01" "2016-11-01"
[10] "2016-12-01"
R>
最后,您对 POSIXct 类型的请求仍然是一小时,一分钟和一秒。但是按照同样的原则:
R> anytime(date)
[1] "2016-03-01 CST" "2016-04-01 CDT"
[3] "2016-05-01 CDT" "2016-06-01 CDT"
[5] "2016-07-01 CDT" "2016-08-01 CDT"
[7] "2016-09-01 CDT" "2016-10-01 CDT"
[9] "2016-11-01 CDT" "2016-12-01 CST"
R>
这两个函数分别返回适当的Date
和POSIXct
类型。