Boa tarde gente!
Estou com uma dúvida, o banco de dados que estou trabalhando está com alguns dados que foram colocados errados, portanto, eu gostaria de substitui-los por NA. Entretanto, não é a coluna inteira, são apenas alguns valores de algumas variáveis. Como eu posso fazer para substituir esses valores errados de um dataframe em NA?
Oi Thainara!
Existe alguma regra para identificar os valores incorretos?
Acho que a função case_when()
do pacote dplyr pode ser útil. Escrevi um exemplo: imagine que queremos substituir alguns casos de eye_color dos personagens de starwars por NA:
library(magrittr)
library(dplyr)
starwars %>%
select(name, eye_color) %>%
# nome da coluna
mutate(eye_color_modificado =
case_when(
# alguma regra # o que vai substituir
eye_color %in% c("red", "orange") ~ NA_character_,
# o que será colocado na coluna eye_color_modificado
# para valores que não cairam nas regras anteriores
TRUE ~ eye_color)
)
Uma coisa para ter atenção é que o NA é representado nesse caso por NA_character_
, pois a coluna que estamos criando é uma coluna de texto. Caso seja uma coluna de outro tipo, existem outros tipos de NA_*.
A documentação da função também mostra alguns exemplos: A general vectorised if — case_when • dplyr
2 curtidas
e tbm tem o dplyr::na_if() pra trocar um valor por NA!
library(dplyr)
mtcars[1:5, 1:3] %>%
mutate(across(mpg:disp, ~na_if(., 6)))
#> mpg cyl disp
#> Mazda RX4 21.0 NA 160
#> Mazda RX4 Wag 21.0 NA 160
#> Datsun 710 22.8 4 108
#> Hornet 4 Drive 21.4 NA 258
#> Hornet Sportabout 18.7 8 360
Created on 2021-08-04 by the reprex package (v2.0.0)
4 curtidas