Преобразование формата даты в R - PullRequest
0 голосов
/ 03 августа 2020

У меня проблема с преобразованием переменной в формат даты. У меня есть следующий столбец:

fechas
20200509
20200601
20200505
20200610
20200612
20200529

, где для первой строки 2020 - год, 05 - месяц, а 09 - день. Поэтому мне нужно преобразовать этот столбец в:

fechas
2020-05-09
2020-06-01
2020-05-05
2020-06-10
2020-06-12
2020-05-29

Я придумал решение разделения символов и вставки их с помощью -, но я хотел знать, есть ли более простой способ сделать это.

Ответы [ 4 ]

1 голос
/ 03 августа 2020

Я бы предложил использовать встроенный strptime

# Data
dates <- c(20200509L, 20200601L, 20200505L, 20200610L, 20200612L, 20200529L)

strptime(dates, "%Y%m%d")
# [1] "2020-05-09 CEST" "2020-06-01 CEST" "2020-05-05 CEST"
# [4] "2020-06-10 CEST" "2020-06-12 CEST" "2020-05-29 CEST"

или в сочетании с as.Date

as.Date(strptime(dates, "%Y%m%d"))
# [1] "2020-05-09" "2020-06-01" "2020-05-05" "2020-06-10" "2020-06-12"
# [6] "2020-05-29"

PS Документация (c .f. ?strptime) предоставляет много интересной информации для анализа даты.

0 голосов
/ 03 августа 2020

Вариант с anydate

library(anytime)
anydate(df1$fechas)
#[1] "2020-05-09" "2020-06-01" "2020-05-05" "2020-06-10" "2020-06-12" "2020-05-29"

данными

df1 <- structure(list(fechas = c(20200509L, 20200601L, 20200505L, 20200610L, 
20200612L, 20200529L)), class = "data.frame", row.names = c(NA, 
-6L))
0 голосов
/ 03 августа 2020

Вы можете посмотреть на эту страницу:

https://stats.idre.ucla.edu/r/faq/how-can-i-format-a-string-containing-a-date-into-r-date-object/

Там хорошее объяснение того, как читать произвольный формат даты.

Case 1 - хороший пример.

0 голосов
/ 03 августа 2020

Пакет lubridate имеет набор функций, которые упрощают работу с датами. Похоже, что ymd должно работать для вас (год / месяц / день).

library(lubridate)

# character
fecha <- '20200509'
# or numeric
fecha <- 20200509

fecha_nueva <- ymd(fecha)

[1] "2020-05-09"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...