У меня есть даты в моем наборе данных, которые отформатированы следующим образом:
"4252001" "5092001" "4242001" "5092001" "5192001" "6292001" "10242001"
Я хочу добавить тире (-) между ними, чтобы они выглядели так:
«25.04.2001» «24.05.2001» «24.04.2001» «09.05.2001» «19.05.2001» «29.06.2001» «24.10.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"
Потрясающий! Я не знал об этом пакете! Спасибо!
То, что занимало меня весь день, заняло у вас секунды! Большое вам спасибо за вашу помощь!