r - 创建两个日期之间所有天数的向量

标签 r date sequence lubridate

R 中是否有一种简单的方法可以列出两个指定日期之间发生的所有有效日期?例如,我想要以下输入:

itemizeDates(startDate="12-30-11", endDate="1-4-12")

生成以下日期:

"12-30-11" "12-31-11", "1-1-12", "1-2-12", "1-3-12", "1-4-12"

我对类(class)和日期格式很灵活,我只需要概念的实现。

最佳答案

您正在寻找seq

> seq(as.Date("2011-12-30"), as.Date("2012-01-04"), by="days")
[1] "2011-12-30" "2011-12-31" "2012-01-01" "2012-01-02" "2012-01-03"
[6] "2012-01-04"
<小时/>

或者,您可以使用:

> as.Date(as.Date("2011-12-30"):as.Date("2012-01-04"), origin="1970-01-01")
[1] "2011-12-30" "2011-12-31" "2012-01-01" "2012-01-02" "2012-01-03"
[6] "2012-01-04"

请注意,使用:“非数字参数在内部强制”。因此,我们使用类“numeric”的 as.Date 方法转换回类 Date,并提供 origin

<小时/>

这里有一个函数可以满足您的特定要求

itemizeDates <- function(startDate="12-30-11", endDate="1-4-12", 
                         format="%m-%d-%y") {
  out <- seq(as.Date(startDate, format=format), 
             as.Date(endDate, format=format), by="days")  
  format(out, format)
}

> itemizeDates(startDate="12-30-11", endDate="1-4-12")
[1] "12-30-11" "12-31-11" "01-01-12" "01-02-12" "01-03-12" "01-04-12"

关于r - 创建两个日期之间所有天数的向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14450384/

相关文章:

r - R中使用ifelse()语句获取不同类的对象

Swift "date from string"转换不起作用但格式适用于在线服务?

drupal - 将日期数组保存到数据库

c - 如何在原始输入模式下发送终端转义序列?

r - 以相同的顺序将模式的所有元素与向量匹配

r - 使用R提取字符串中 "+"和 "*"符号的位置

r - dplyr 包可以用于条件变异吗?

javascript - 如何处理 php (Laravel api) 和 javascript (AngularJS) 之间的日期时间

python - 如何追加到自定义 python 序列?

r - R 中的折叠列表