我想创建一个从2010-04-01到2040-03-01的日期序列,并将日期格式表示为“April-2010”或“Apr 2010”。然而,当我使用as.yearmon()时,它只返回“4 2010”而不是“Apr 2010”。
这是我的第一个代码,我试图将“2010-04-01”转换为“Apr 2010”的格式,但代码的结果是“4 2010”。
as.yearmon("2010-04-01", format = "%Y-%m-%d")
此外,我试图制作一个序列,但发生了一个错误(错误在del/by:二元运算符的非数值参数)
seq(as.yearmon("2010-04-01"), as.yearmon("2040-03-01"), by = "1 month")
总而言之,我想做一个序列如下。你能帮助我怎么做吗?
"Apr 2010", "May 2010", "Jun 2010", ... , "Mar 2040"
4条答案
按热度按时间xxhby3vn1#
我们可以使用
format
:wz3gfoph2#
您可以先使用
as.Date
将开始和结束日期转换为日期格式,然后使用as.yearmon
将序列转换为所需的格式,如下所示:创建于2023-03-24使用reprex v2.0.2
km0tfn4u3#
如果将
by="1 month"
替换为by=1/12
,则问题中的seq
命令将正常工作。(例如,添加1/12得到下个月,等等),并且不需要显式地中间转换为Date。是年份加分数,其中分数是0,1/12,2/12,...,11/12,代表一年中的12个月,因此:实际上不需要-01,因此也可以写成:
8qgya5xd4#
你可以使用我的软件包timeplyr中的
time_seq()
来获得更灵活的开始日期,它也没有混合日期和日期时间的问题。创建于2023-03-24使用reprex v2.0.2