rfsaldanha / microdatasus

Download de dados do DataSUS e pré-processamento no R.
https://rfsaldanha.github.io/microdatasus/
Other
229 stars 57 forks source link

Process SIM entre 2010 e 2013 para SP, RJ e GO #51

Closed topeixoto closed 1 year ago

topeixoto commented 2 years ago

Problema

Preciso trabalhar com dados do SIM de 2010 à 2020, consegui coletar com sucesso usando o fetch_datasus, porém ao tentar processar esse dados usando process_sim recebi o seguinte erro Error in $<-.data.frame(*tmp*, "NATURAL", value = c(101L, 74L, 120L, : replacement has 270384 rows, data has 270367. Após alguns debugs percebi que isso acontece com dados de SP, GO, RJ para os anos de 2010, 2011, 2012, 2013. Posteriormente, realizei mais alguns debugs e percebi que esse erro é acontece na nessa linha que faz o processamento do campo NATURALIDADE pois o left_join está retornando um número maior de registro do que o original. Depois, realizei mais uns debugs para entender o porquê do left_join está retornando mais registro que o o original, então percebi que a tabela tabNaturalidade tem os seguintes campos cod duplicados:

Minhas questões são:

Para eu conseguir seguir o meu trabalho eu fiz a seguinte manipulação antes de executar o process_sim:

load("tabNaturalidade.rda")
tabNaturalidade <- subset(tabNaturalidade, nome!="LAOS" & nome!="EIRE" & nome!="FALKLAND, ILHAS")

Porém, não sei se essa é a melhor solução para o problema.

Fico a disposição para mais informações.

rfsaldanha commented 2 years ago

Opa, obrigado pela issue! Vou verificar e atualizar, não era para ter duplicado.

andreiafontanella commented 2 years ago

@topeixoto muito obrigada por ter compartilhado tua sualução, funcionou muito bem aqui!

Será que um inner_join não ajudaria a resolver o problema?!