通常我会用这个:
seq(as.Date("01/01/1964"), as.Date("01/12/1964"), "months", format = "%d%m%Y", tz = "UTC")
但我收到了这个:
[1] "0001-01-19" "0001-02-19" "0001-03-19" "0001-04-19" "0001-05-19" "0001-06-19" "0001-07-19" "0001-08-19" "0001-09-19"
[10] "0001-10-19" "0001-11-19" "0001-12-19"
我尝试了其他人的推特和其他提示,但不起作用。
提前致谢。
修改
@ r2evans ans:
format(seq(as.Date('1964/01/01'), as.Date('1964/12/01'), 'months'), format="%d-%m-%Y", tz="UTC")
[1] "01-01-1964" "01-02-1964" "01-03-1964" "01-04-1964" "01-05-1964" "01-06-1964" "01-07-1964" "01-08-1964" "01-09-1964"
[10] "01-10-1964" "01-11-1964" "01-12-1964"
答案 0 :(得分:1)
来自help(as.Date)
:
格式:字符串。如果没有指定,它将在第一个非'''元素上尝试'“%Y-%m-%d”'然后''%Y /%m /%d“'。
对于调试,尝试提供信息:
as.Date("01/01/1964")
## [1] "0001-01-19"
您可以从中快速推断出它错误地识别您的字段。
如果您可以控制开始/结束日期格式,则只需更改它:
seq(as.Date("1964/01/01"), as.Date("1964/12/01"), "months", format = "%d%m%Y", tz = "UTC")
## [1] "1964-01-01" "1964-02-01" "1964-03-01" "1964-04-01" "1964-05-01" "1964-06-01"
## [7] "1964-07-01" "1964-08-01" "1964-09-01" "1964-10-01" "1964-11-01" "1964-12-01"
虽然format=
参数不起作用(seq
不使用它)。用format
包裹整个内容以获取您想要的字符串,但要意识到这些字符串不再是Date
类:
format(seq(as.Date('1964/01/01'), as.Date('1964/12/01'), 'months'), format="%Y%m%d", tz="UTC")
## [1] "19640101" "19640201" "19640301" "19640401" "19640501" "19640601" "19640701"
## [8] "19640801" "19640901" "19641001" "19641101" "19641201"
但是,如果您无法控制开始/停止日期的格式,则为每个format=
添加tz=
参数(如果需要,还加as.Date
):< / p>
seq(as.Date('01/01/1964', format='%d/%m/%Y'), as.Date('01/12/1964', format='%d/%m/%Y'), 'months')
## [1] "1964-01-01" "1964-02-01" "1964-03-01" "1964-04-01" "1964-05-01" "1964-06-01"
## [7] "1964-07-01" "1964-08-01" "1964-09-01" "1964-10-01" "1964-11-01" "1964-12-01"
并根据需要使用format
,如果需要。
答案 1 :(得分:0)
基础R中的解决方案
my.format <- "%d/%m/%Y"
seq(as.Date("01/01/1964", format = my.format),
as.Date("01/12/1964", format = my.format),
"months")
基本上,你错过了"/"
。
此外,正如所指出的,使用日期的ISO标准符号(例如YYYY-MM-DD
)简化了很多。