7.9 Dados duplicados
Dados frequentemente pode ter valores duplicados ou repetidos e dependendo da aplicação isso pode causar problemas nos resultados. Portanto é importante detectar e remover essas ocorrências. O oferece algumas funções convenientes para detectar dados duplicados.
Mas antes, vamos criar um vetor de datas com alguns dias repetidos para então mostrar as funcionalidades disponíveis.
datas <- seq(
from = as.Date("2017-01-10"),
to = as.Date("2017-01-10") + 10,
by = "day"
)
datas <- c(
datas[1:6], NA,
datas[7:length(datas)],
datas[length(datas)],
datas[5:6]
)
datas
#> [1] "2017-01-10" "2017-01-11" "2017-01-12" "2017-01-13" "2017-01-14"
#> [6] "2017-01-15" NA "2017-01-16" "2017-01-17" "2017-01-18"
#> [11] "2017-01-19" "2017-01-20" "2017-01-20" "2017-01-14" "2017-01-15"
A função duplicated()
detecta onde ocorrem valores repetidos.
duplicated(datas)
#> [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [13] TRUE TRUE TRUE
Ela retorna um vetor lógico mostrando quais elementos são duplicados. Neste exemplo os últimos 3 elementos. Este resultado pode ser usado para remover os valores repetidos:
# datas únicas: sem valores duplicados
datas[!duplicated(datas)]
#> [1] "2017-01-10" "2017-01-11" "2017-01-12" "2017-01-13" "2017-01-14"
#> [6] "2017-01-15" NA "2017-01-16" "2017-01-17" "2017-01-18"
#> [11] "2017-01-19" "2017-01-20"
Alternativamente, há função unique()
para remover valores repetidos de um vetor:
unique(datas)
#> [1] "2017-01-10" "2017-01-11" "2017-01-12" "2017-01-13" "2017-01-14"
#> [6] "2017-01-15" NA "2017-01-16" "2017-01-17" "2017-01-18"
#> [11] "2017-01-19" "2017-01-20"