Converta uma coluna de caractere para data com vários formatos
Aqui estão meus dados de exemplo iniciais do Excel (da próxima vez, vou ensinar meu cliente sobre dados organizados):
date_string
3/13, 3/17, 3/20
4/13
5/12, 5/20
Chego bem perto do que quero com isso:
library(tidyverse)
library(stringr)
data <- str_split_fixed(data$date_string, ",", 3)%>%
as_tibble() %>%
gather() %>%
filter(value != "")
então eu fico com isso:
key value
v1 3/13
v1 43203
v1 5/12
v2 3/17
v2 5/20
v3 3/20
Isso é bom o suficiente para que eu possa fazer o resto da formatação e organização no Excel, mas quanto mais eu puder fazer no R, melhor, especialmente porque precisarei fazer isso novamente na próxima vez em que atualizar o produto final. Eu sinto que há umlubridate
função para me ajudar com isso, masmdy
edate
continue retornando erros.
O valor que eu quero é a tabela acima, mas no formato m / d / a.
Atualizar
Com base na resposta abaixo, adicionei o seguinte. Isso funciona, mas provavelmente existe uma maneira mais elegante de fazer isso:
data <- str_split_fixed(data$date_string, ",", 3)%>%
as_tibble() %>%
gather() %>%
filter(value != "") %>%
mutate(value =
if_else(
str_detect(value, "/") == T,
paste0(value, "/2018"),
as.character(as_date(as.numeric(value), origin = "1900-01-01")))) %>%
mutate(value =
if_else(
str_detect(value, "/") == T,
mdy(value),
ymd(value)))
Recebo esses avisos, mas os dados são como quero:
1. In as_date(as.numeric(value), origin = "1900-01-01") :
NAs introduced by coercion
2. 1 failed to parse.
3. 5 failed to parse.
Não tenho certeza de como "falhou ao analisar" quando a coluna final "value" é retornada como uma variável de data. . .