如何将 - 添加到 r 中的日期?

How to add a - to a date in r?

我的数据集中的日期格式如下:

“4252001”“5092001”“4242001”“5092001”“5192001”“6292001”“10242001”

我想在它们之间添加破折号 (-),因此它们看起来像这样:

“4-25-2001”“5-09-2001”“4-24-2001”“5-09-2001”“5-19-2001”“6-29-2001”“10- 24-2001

然后我想把它们转换成r中的时间序列数据

我这辈子都不知道如何给这些日期加上破折号。

另外,根据月份的不同,有些日期有 7 个或 8 个字符。在试图弄清楚如何将它们变成日期时,这是一个重要的考虑因素,我想传递给任何试图提供帮助的人。

您可以使用

x = c("4252001", "5092001", "4242001", "5092001", "5192001", "6292001", "10242001")    
y = sub('(\d{2})(\d{4})$', '-\1-\2', x)
##[1] "4-25-2001"  "5-09-2001"  "4-24-2001"  "5-09-2001"  "5-19-2001" 
##[6] "6-29-2001"  "10-24-2001"

然后转换为日期

as.Date(y, format = '%m-%d-%Y')

就这样:

x = c("4252001", "5092001", "4242001", "5092001", "5192001", "6292001", "10242001") 

as.Date(sprintf('%08d',as.numeric(x)),'%m%d%Y')

[1] "2001-04-25" "2001-05-09" "2001-04-24" "2001-05-09" "2001-05-19" "2001-06-29" "2001-10-24"

使用lubridate,更简单:

x = c("4252001", "5092001", "4242001", "5092001", "5192001", "6292001", "10242001")

library(lubridate)

mdy(as.numeric(x))

[1] "2001-04-25" "2001-05-09" "2001-04-24" "2001-05-09" "2001-05-19" "2001-06-29" "2001-10-24"