Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中列出两个日期之间的所有月份_R_Date - Fatal编程技术网

如何在R中列出两个日期之间的所有月份

如何在R中列出两个日期之间的所有月份,r,date,R,Date,我试图创建一个函数,将两个月之间的所有月份都放入一个列表中: date1<- 201305 date2<- 201511 months <- function(date1,date2){} 首先,我们需要创建日期。你们提供的还不是一个日期,因为它错过了一天——所以我们添加了一个: R> d1 <- as.Date(paste0("201305","01"), "%Y%m%d") R> d2 <- as.Date(paste0("201511","01

我试图创建一个函数,将两个月之间的所有月份都放入一个列表中:

date1<- 201305
date2<- 201511

months <- function(date1,date2){}

首先,我们需要创建日期。你们提供的还不是一个日期,因为它错过了一天——所以我们添加了一个:

R> d1 <- as.Date(paste0("201305","01"), "%Y%m%d")
R> d2 <- as.Date(paste0("201511","01"), "%Y%m%d")
我们检查开头和结尾:

R> head(dat)
[1] "201305" "201306" "201307" "201308" "201309" "201310"
R> tail(dat)
[1] "201506" "201507" "201508" "201509" "201510" "201511"
R> 
现在,作为一项功能:

datseq <- function(t1, t2) { 
   format(seq(as.Date(paste0(t1,"01"), "%Y%m%d"), 
              as.Date(paste0(t2,"01"), "%Y%m%d"),by="month"), 
          "%Y%m") 
}

datseq这可以使用zoo包中的
yearmon
类来完成:

library(zoo)

ym1 <- as.yearmon(as.character(date1), "%Y%m") # convert to yearmon
ym2 <- as.yearmon(as.character(date2), "%Y%m") # ditto
s <- seq(ym1, ym2, 1/12) # create yearmon sequence
as.numeric(format(s, "%Y%m")) # convert to numeric yyyymm
或者您可能更喜欢使用
s
,这是一个yearmon类变量,看起来像这样,但排序正确,可用于绘图:

> s
 [1] "May 2013" "Jun 2013" "Jul 2013" "Aug 2013" "Sep 2013" "Oct 2013"
 [7] "Nov 2013" "Dec 2013" "Jan 2014" "Feb 2014" "Mar 2014" "Apr 2014"
[13] "May 2014" "Jun 2014" "Jul 2014" "Aug 2014" "Sep 2014" "Oct 2014"
[19] "Nov 2014" "Dec 2014" "Jan 2015" "Feb 2015" "Mar 2015" "Apr 2015"
[25] "May 2015" "Jun 2015" "Jul 2015" "Aug 2015" "Sep 2015" "Oct 2015"
[31] "Nov 2015"
例如,这项工作:

plot(seq(31) ~ s)

.. 然后发生了什么?请回答您的问题,并说明您取得了多大进展。相关:谢谢您的编辑。正如您可能已经猜到的,函数没有经过测试:-/我是R新手,所以这个错误实际上帮助我更好地学习了seq()。
[1] 201305 201306 201307 201308 201309 201310 201311 201312 201401 201402
[11] 201403 201404 201405 201406 201407 201408 201409 201410 201411 201412
[21] 201501 201502 201503 201504 201505 201506 201507 201508 201509 201510
[31] 201511
> s
 [1] "May 2013" "Jun 2013" "Jul 2013" "Aug 2013" "Sep 2013" "Oct 2013"
 [7] "Nov 2013" "Dec 2013" "Jan 2014" "Feb 2014" "Mar 2014" "Apr 2014"
[13] "May 2014" "Jun 2014" "Jul 2014" "Aug 2014" "Sep 2014" "Oct 2014"
[19] "Nov 2014" "Dec 2014" "Jan 2015" "Feb 2015" "Mar 2015" "Apr 2015"
[25] "May 2015" "Jun 2015" "Jul 2015" "Aug 2015" "Sep 2015" "Oct 2015"
[31] "Nov 2015"
plot(seq(31) ~ s)