Как преобразовать строковый множитель в дату? - PullRequest
0 голосов
/ 17 апреля 2019

Я работаю с набором данных о преступности в Лондоне, который содержит даты в целочисленном формате.Я растопил их, и теперь они стали factor с.

Например, "X200801".Я хочу преобразовать его в "1/1/2008".

Я знаю, as.Date используется для преобразования различных типов в формат даты, но все же я немного запутался с этим форматом даты, который предоставляется в наборе данных, т.е."X200801".

Это моя структура

enter image description here

Ответы [ 5 ]

4 голосов
/ 17 апреля 2019

Используя базу R, мы можем добавить компонент даты, используя paste0, преобразовать в объект даты, используя соответствующий format.

as.Date(paste0("X200801", "01"), format = "X%Y%m%d")
#[1] "2008-01-01"
3 голосов
/ 17 апреля 2019

Одной из возможностей является использование lubridate

ss <- factor("X200801")

library(lubridate)
ymd(paste(sub("X", "", ss), "01", sep = ""))
#[1] "2008-01-01"
2 голосов
/ 17 апреля 2019

Использование anytime:

test=as.factor("X200801")
library(anytime)
anydate((gsub("X","",test)))
[1] "2008-01-01"

В соответствии с предложением @akrun мы можем просто указать формат, который будет использоваться в нашей среде, с помощью addFormats и использовать anydate для преобразования в дату:

addFormats("X%Y%m")
anydate("X200801")
1 голос
/ 17 апреля 2019

Может быть компактно изменено с as.yearmon

library(zoo)
as.Date(as.yearmon("X200801", "X%Y%m"))
#[1] "2008-01-01"
0 голосов
/ 17 апреля 2019

Вы можете использовать parse_datetime из пакета readr:
testdate <- factor("X200801")
parse_datetime(as.character(testdate), format = 'X%Y%M')

Я бы не рекомендовал использовать MM / DD / YYY в R. Хранение данных в формате ISO 8601 является предпочтительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...