【问题标题】:How to create a vector between 2 dates in R [duplicate]如何在R中的2个日期之间创建一个向量[重复]
【发布时间】:2017-05-05 14:38:40
【问题描述】:

我是 R 新手,我想在两个日期之间创建一个向量 a

这是我的代码

 start.plot <- c("2011-01-01", "2012-12-31")
 plot1 <- substr(start.plot[1],1,7)
 plot2 <- substr(start.plot[2],1,7)

 Month_test <- as.character(seq(as.Date(start.plot[1]), as.Date(start.plot[2]), by="months"))

这是这段代码的结果

 [1] "2011-01-01" "2011-02-01" "2011-03-01" "2011-04-01" "2011-05-01" "2011-06-01"
 [7] "2011-07-01" "2011-08-01" "2011-09-01" "2011-10-01" "2011-11-01" "2011-12-01"

我只需要这个日期的 YYYY-MM 格式作为这样的字符

 [1] "2011-01" "2011-02" "2011-03" "2011-04" "2011-05" "2011-061"
 [7] "2011-07" "2011-08" "2011-09" "2011-10" "2011-11" "2011-12"

在 R 中编写此代码的最佳方法是什么?谢谢

【问题讨论】:

  • 实际上,一个可能不是重复的,但是这个问题很可能在某个地方有一个。
  • @DirkEddelbuettel 我将问题解释为“我知道如何用seq 增加日期,但想提取月份”。在这种解释下,@sotos 指出的欺骗似乎是合理的。

标签: r date vector


【解决方案1】:

关键是使用正确的类型。永远不要在日期中使用字符。

R> p1 <- as.Date("2011-01-01")
R> p2 <- as.Date("2012-12-31")
R> mydates <- seq(p1, p2, by="day")
R> head(mydates)
[1] "2011-01-01" "2011-01-02" "2011-01-03" "2011-01-04" "2011-01-05" "2011-01-06"
R> str(mydates)
 Date[1:731], format: "2011-01-01" "2011-01-02" "2011-01-03" "2011-01-04" "2011-01-05" "2011-01-06" "2011-01-07" ...
R> 

对于正确的类型DatePOSIXct(用于日期时间),R 具有很多 有用的计算基础结构。正如您在此处看到的,序列创建“正常工作”。

然后您可以执行其他技巧,例如排除周末等。

【讨论】:

  • 感谢 Dirk Eddlebuettel 抽出宝贵时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-20
  • 2013-01-05
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
  • 2018-09-13
相关资源
最近更新 更多