Как добавить - к дате в г? - PullRequest
0 голосов
/ 28 января 2019

В моем наборе данных есть даты, отформатированные следующим образом:

"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 символов.Пытаясь выяснить, как превратить их в даты, это было важным соображением, которое я хотел передать любому, кто пытается помочь.

Ответы [ 3 ]

0 голосов
/ 28 января 2019

просто сделай:

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"
0 голосов
/ 28 января 2019

с использованием 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"
0 голосов
/ 28 января 2019

Вы можете использовать

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')
...