假设我想生成一个包含列的数据框 结构如下。
2011-08-01
2011-08-02
2011-08-03
2011-08-04
...
我想知道是否可以使用seq()
命令生成此数据。
如下所示:(显然不起作用)
seq(2011-08-01:2011-08-31)
我是否必须使用toDate和regex来生成此日期 具体格式。
答案 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")