通常我用这个:
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"
我尝试了 lubridate 和其他人的提示,但不起作用。
提前致谢。
编辑
@r2evans:
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"
最佳答案
来自帮助(as.Date)
:
format: A character string. If not specified, it will try '"%Y-%m-%d"' then '"%Y/%m/%d"' on the first non-'NA' element.
对于调试,尝试一下会很有帮助:
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
:
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"
并根据需要使用上面的格式
。
关于r - 如何生成日期序列格式 dd/mm/yy 或 %d%m%y?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23353378/