首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将字符Y-m格式化为R中的月份?

如何将字符Y-m格式化为R中的月份?
EN

Stack Overflow用户
提问于 2020-07-04 20:22:17
回答 4查看 174关注 0票数 0

我有一个可变的日期,比如"2019-2“和"2019-10”。然而,当创建日期为"2019-10“的图形比"2019-2”更早时,我需要在ggplot中绘制图形。我怎么才能修复它?我试着做了以下事情:

代码语言:javascript
运行
复制
as.Date("2019-2",format="%Y-%m")
as.Date("2019-10",format="%Y-%m")

但是,它显示为NA。

EN

回答 4

Stack Overflow用户

发布于 2020-07-04 20:36:10

另一种方法是使用带有month数字格式的sprintf()来添加前导零。

代码语言:javascript
运行
复制
yr_month <- c("2020-1","2020-2","2020-10")

sprintf("%4d-%02d",as.numeric(substr(yr_month,1,4)),as.numeric(substr(yr_month,6,7)))

对输出执行...and操作:

代码语言:javascript
运行
复制
> sprintf("%4d-%02d",as.numeric(substr(yr_month,1,4)),as.numeric(substr(yr_month,6,7)))
[1] "2020-01" "2020-02" "2020-10"
> 
票数 1
EN

Stack Overflow用户

发布于 2020-07-04 21:05:31

你需要在中人工添加一个日期值来解析,例如"2019-10“作为一个Date对象。假设你有一些向量dates格式的日期,有一堆选项。

基数R:

代码语言:javascript
运行
复制
format(as.Date(paste0(dates, "-01")), "%Y-%m")

使用lubridate包:

代码语言:javascript
运行
复制
format(lubridate::parse_date_time(dates, "ym"), "%Y-%m")

但是,format会将Date对象转换为character对象。如果您认为将来需要类似日期的行为,则可以将dates转换为POSIXct对象……

代码语言:javascript
运行
复制
as.POSIXct(paste0(dates, "-01"))

...and让ggplot通过将以下内容添加到绘图中来处理将它们格式化为“年-月”的问题(假设日期在x轴上):

代码语言:javascript
运行
复制
ggplot(...) +
  ... +
  scale_x_datetime(date_breaks = "1 month", date_labels = "%Y-%m")
票数 1
EN

Stack Overflow用户

发布于 2020-07-04 20:32:40

尝试将一天添加到您的一天,然后使用format

代码语言:javascript
运行
复制
format(as.Date("2019-2-1",format="%Y-%m-%d"),"%Y-%m")

"2019-02"

format(as.Date("2019-10-1",format="%Y-%m-%d"),"%Y-%m")

"2019-10"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62729041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档