Oi Fe! Vi aqui que duas pessoas já responderam, mas não tinha resposta ainda quando eu abri…
como eu fiz uma resposta um pouco diferente das outras, vou colar a forma que eu pensei também!
# criando umas bases de exemplo,
# as bases tem nome de coluna diferente
ex_1 <- tibble::tibble(data_criacao = c("2022-02-28", "2022-01-29", "2022-02-15"))
ex_2 <- tibble::tibble(data = c("2022-02-28", "2022-01-29", "2022-02-15"))
# a funcao transformar data usa seu codigo, e recebendo uma base de dados e o nome da coluna, transforma a coluna
transformar_data <- function(data, col){
dplyr::mutate(data, {{col}} := as.Date(as.character(.data[[col]]),
format = "%Y-%m-%d"))
}
# exemplos de uso
ex_12 <- transformar_data(ex_1, "data_criacao")
ex_12
#> # A tibble: 3 × 1
#> data_criacao
#> <date>
#> 1 2022-02-28
#> 2 2022-01-29
#> 3 2022-02-15
ex_22 <- transformar_data(ex_2, "data")
ex_22
#> # A tibble: 3 × 1
#> data
#> <date>
#> 1 2022-02-28
#> 2 2022-01-29
#> 3 2022-02-15
# dentro da função também daria pra usar o parse_date:
transformar_data_parse <- function(data, col){
dplyr::mutate(data, {{col}} := readr::parse_date(.data[[col]],
format = "%Y-%m-%d"))
}
ex_13 <- transformar_data_parse(ex_1, "data_criacao")
ex_13
#> # A tibble: 3 × 1
#> data_criacao
#> <date>
#> 1 2022-02-28
#> 2 2022-01-29
#> 3 2022-02-15
ex_23 <- transformar_data_parse(ex_2, "data")
ex_23
#> # A tibble: 3 × 1
#> data
#> <date>
#> 1 2022-02-28
#> 2 2022-01-29
#> 3 2022-02-15
Created on 2022-03-11 by the reprex package (v2.0.0.9000)
Bom, acho que a solução que o Caio deu ficou mais fácil aiuhauhauia mas é legal ver formas diferentes de fazer a mesma coisa
Edit!
Eu acho que algo que é bom citar é que a solução que eu fiz fica pipeável, por exemplo:
transformar_data <- function(data, col){
dplyr::mutate(data, {{col}} := as.Date(as.character(.data[[col]]),
format = "%Y-%m-%d"))
}
base_com_varias_colunas_pra_tratar <- tibble::tibble(
data_criacao = c("2022-02-28", "2022-01-29", "2022-02-15"),
data = c("2022-02-28", "2022-01-29", "2022-02-15"),
data_final = c("2022-02-28", "2022-01-29", "2022-02-15")
)
base_com_varias_colunas_pra_tratar
#> # A tibble: 3 × 3
#> data_criacao data data_final
#> <chr> <chr> <chr>
#> 1 2022-02-28 2022-02-28 2022-02-28
#> 2 2022-01-29 2022-01-29 2022-01-29
#> 3 2022-02-15 2022-02-15 2022-02-15
base_com_varias_colunas_pra_tratar |>
transformar_data("data_criacao") |>
transformar_data("data") |>
transformar_data("data_final")
#> # A tibble: 3 × 3
#> data_criacao data data_final
#> <date> <date> <date>
#> 1 2022-02-28 2022-02-28 2022-02-28
#> 2 2022-01-29 2022-01-29 2022-01-29
#> 3 2022-02-15 2022-02-15 2022-02-15
Created on 2022-03-11 by the reprex package (v2.0.0.9000)