创建一个独特的日期序列

时间:2011-09-24 01:10:47

标签: r date

假设我想生成一个包含列的数据框 结构如下。

2011-08-01
2011-08-02
2011-08-03
2011-08-04
...

我想知道是否可以使用seq()命令生成此数据。

如下所示:(显然不起作用)

seq(2011-08-01:2011-08-31)

我是否必须使用toDate和regex来生成此日期 具体格式。

5 个答案:

答案 0 :(得分:29)

正如我在评论中所述,seq有日期方法,seq.Date

seq(as.Date('2011-01-01'),as.Date('2011-01-31'),by = 1)
 [1] "2011-01-01" "2011-01-02" "2011-01-03" "2011-01-04" "2011-01-05" "2011-01-06" "2011-01-07" "2011-01-08"
 [9] "2011-01-09" "2011-01-10" "2011-01-11" "2011-01-12" "2011-01-13" "2011-01-14" "2011-01-15" "2011-01-16"
[17] "2011-01-17" "2011-01-18" "2011-01-19" "2011-01-20" "2011-01-21" "2011-01-22" "2011-01-23" "2011-01-24"
[25] "2011-01-25" "2011-01-26" "2011-01-27" "2011-01-28" "2011-01-29" "2011-01-30" "2011-01-31"

答案 1 :(得分:10)

我在seq()尝试制作数字序列时犯了同样的错误。不要在参数之间使用“:”运算符,如果要创建日期序列,则需要使用日期。另一种方法是取一个日期并添加一个以0开头的数字序列:

> as.Date("2000-01-01") + 0:10
 [1] "2000-01-01" "2000-01-02" "2000-01-03" "2000-01-04" "2000-01-05" "2000-01-06"
 [7] "2000-01-07" "2000-01-08" "2000-01-09" "2000-01-10" "2000-01-11"

答案 2 :(得分:7)

您可以在xts包中尝试timeBasedSeq。请注意,参数是一个字符串,并使用双冒号。

timeBasedSeq("2011-08-01::2011-08-31")

答案 3 :(得分:1)

我必须用min生成一个seq,这并不容易,但我在基础中找到了seq.POSIXt。在您的情况下,您需要从2011-08-01到2011-08-31的每日数据。所以我建议你

{{1}}

答案 4 :(得分:0)

这对我有用!我知道这与最受欢迎的答案相似,但是我可以在文本中指定“ 1个月”的事实真是太神奇了!

seq(as.Date("2012-01-01"),as.Date("2019-12-01"), by = "1 month")