Estudio CNDE
  • Asoc. Española de Lactancia Materna
  • Descargar PDF
  1. 3  👁️‍🗨️ Limpieza de datos
  • 1  Estudio CNDE
  • 2  👁️‍🗨️️ Objetivos
  • 3  👁️‍🗨️ Limpieza de datos
  • 4  👁️‍🗨 Consolidación de las bases de datos
  • 5  👁️‍🗨Análisis exploratorio
  • 6  👁️‍🗨 Lactancia vs infecciones
  • 7  Test Matthews y LATCH y la lactancia Materna

Tabla de contenidos

  • 3.1 Pediatría
    • 3.1.1 Warnings (dudas)
  • 3.2 Pediatría y Protocolo salud
  • 3.3 Hospitalización
  • 3.4 Patologías
  • 3.5 Grupos Relacionados por el Diagnóstico (Portal Estadístico)

3  Limpieza de datos

Refactoring y depuración de las bases de datos

Autor/a

Mario Camacho

Fecha de publicación

26 abril 2026

3.1 Pediatría

Estructura interna de la base de datos:

tibble [67,961 × 25] (S3: tbl_df/tbl/data.frame)
 $ CIP_ANON                     : Factor w/ 67961 levels "1000100852","100035"..
 $ Fecha de nacimiento          : POSIXct[1:67961], format: "2018-01-01" ...
 $ sexo                         : Factor w/ 2 levels "Hombre","Mujer": 1 1 ...
 $ Peso al nac                  : num [1:67961] 3285 ...
 $ e. madre                     : num [1:67961] NA 27 ...
 $ Control                      : Factor w/ 2 levels "No","Sí": 2 2 ...
 $ e. maternal                  : Factor w/ 2 levels "No","Sí": 2 1 ...
 $ lugar_parto                  : Factor w/ 6 levels "Clínica Privada",..: 4 4..
 $ tipo_parto                   : Factor w/ 2 levels "Distócico","Eutócico": 1..
 $ Apgar 1MIN                   : num [1:67961] 9 10 ...
 $ Apgar 5MIN                   : num [1:67961] 10 10 ...
 $ edad gestacional             : num [1:67961] 374 39.4 ...
 $ Fecha del alta               : POSIXct[1:67961], format: "2018-01-02" ...
 $ tipo_lactancia               : Factor w/ 3 levels "Materna","Artificial",....
 $ d. lac materna               : num [1:67961] NA NA ...
 $ formulas especiales          : Factor w/ 2 levels "No","Sí": NA NA ...
 $ Test metabolopatías          : Factor w/ 2 levels "No","Sí": 2 2 ...
 $ Fecha Test                   : POSIXct[1:67961], format: "2018-01-03" ...
 $ Resultado test metabolopatías: Factor w/ 2 levels "Normal","Patológica": 1 ..
 $ mes_nacimiento               : Factor w/ 12 levels "1","2","3","4",..: 1 1 ..
 $ year_nacimiento              : Factor w/ 5 levels "2018","2019",..: 1 1 ...
 $ mes_alta                     : Factor w/ 12 levels "1","2","3","4",..: 1 1 ..
 $ year_alta                    : Factor w/ 66 levels "1900","2000",..: 16 16 ..
 $ mes_test                     : Factor w/ 12 levels "1","2","3","4",..: 1 1 ..
 $ year_test                    : Factor w/ 55 levels "1900","1997",..: 15 15 ..

Eliminamos valor con e. madre < 14.

Mantenemos los valores sin informar (NA) y los mayores e iguales a 14.

Antes: 67961. Después: 67945. Eliminados: 16

Eliminamos valores extremos de e. madre (>= 80).

filtro <- is.na(pediatria$`e. madre`) | pediatria$`e. madre` < 80

Antes: 67945. Después: 67921. Eliminados: 24

Eliminamos valores extremos de días de lactancia materna (>= 200).

filtro <- is.na(pediatria$`d. lac materna`) | pediatria$`d. lac materna` < 200

Antes: 67921. Después: 67916. Eliminados: 5

Filtramos las fechas de test anteriores al nacimiento

No aplica.
- Finalmente no mostramos interés en el test de metabolopatías y no es necesario aplicar filtros al respecto.

# Hay fechas test de 1900 en la base de datos original (2) + otra de 1997 (1).  
# Fecha test tiene 27701 sin informar + 7 casos con fechas en formatos erróneos que el sistema interpreta como Na (anteriores a 1900)
filtro <- pediatria$`Fecha Test` < pediatria$`Fecha de nacimiento`

Filtramos las fechas de alta anteriores al nacimiento

filtro <- pediatria$`Fecha del alta` < pediatria$`Fecha de nacimiento`
filtro
FALSE  TRUE  <NA> 
48469   608 18839 
Antes: 67916. Después: 67308. Eliminados: 608

Filtramos los años de alta y test fuera del rango 2018-2023

El estudio incluye nacimientos hasta 2022: damos un año más de margen (todos los datos incluidos son bebés menores de un año)

anyos <- as.character(2018:2023)
filtro1 <- is.na(pediatria$year_alta) | pediatria$year_alta%in%anyos
filtro2 <- is.na(pediatria$year_test) | pediatria$year_test%in%anyos

Distribución de los años de alta:


 2018  2019  2020  2021  2022  2023  2024  2025  2028  2029  2033  2034  2041 
 9512  9914  9271  9484 10083    97     1     1     1     3     1     1     2 
 2052  2080  2090  2100  2102  2108  2109  2180  2190  2200  2201  2202  2208 
    2     4     3    23     1     2     7     3     2    14     5     2     1 
 2210  2220  2300  2301  2501  2502  2507  2901  2918  2919  2921  3018  3019 
    1     1     1     1     1     2     1     1     1     1     1     1     2 
 3020  3330  4201  5018  5133  5202  7018  7201  7202  8201  8202  9202  <NA> 
    1     1     1     2     1     1     1     1     1     2     1     1 18839 
  Sum 
67308 

Distribución de los años de test:


 1900  1997  2000  2001  2002  2008  2009  2010  2011  2012  2014  2015  2016 
    2     1    20     4     6     1     1    18     2    12     1     3     6 
 2017  2018  2019  2020  2021  2022  2023  2024  2026  2027  2028  2029  2052 
   33  7693  7922  7780  7897  8244   109     1     1     1     1     1     1 
 2080  2090  2100  2108  2109  2121  2122  2180  2190  2200  2201  2202  2210 
    4     4     8     3     4     3     1     1     2     6     1     5     1 
 2218  2220  2300  2501  2502  2840  2918  2921  3019  3202  5018  5202  6202 
    1     2     1     2     1     1     1     2     1     2     1     1     2 
 8202  9201  9202  <NA>   Sum 
    2     1     1 27482 67308 
Antes: 67308. Después: 67021. Eliminados: 287
Tabla de frecuencias
year_alta × mes_alta
year 1 2 3 4 5 6 7 8 9 10 11 12 Na Sum
2018 678 717 722 698 769 792 842 864 837 926 824 803 0 9472
2019 799 712 869 783 861 831 887 902 838 836 768 795 0 9881
2020 745 757 731 711 800 807 858 874 792 806 738 629 0 9248
2021 660 661 825 748 791 757 849 842 855 840 807 821 0 9456
2022 845 764 772 777 854 824 905 969 811 863 818 861 0 10063
2023 65 2 0 1 1 2 4 3 3 0 5 10 0 96
NA. 0 0 0 0 0 0 0 0 0 0 0 0 18805 18805
Sum 3792 3613 3919 3718 4076 4013 4345 4454 4136 4271 3960 3919 18805 67021
Tabla de frecuencias
year_alta × mes_test
year 1 2 3 4 5 6 7 8 9 10 11 12 Na Sum
2018 533 595 600 563 642 708 702 687 652 765 630 603 0 7680
2019 622 574 697 597 659 676 697 716 730 686 614 631 0 7899
2020 628 646 618 625 645 671 727 708 646 691 620 549 0 7774
2021 562 584 694 605 703 639 703 684 730 685 666 628 0 7883
2022 658 655 611 654 702 694 719 797 706 718 659 659 0 8232
2023 73 10 1 1 1 2 3 2 1 1 2 11 0 108
NA. 0 0 0 0 0 0 0 0 0 0 0 0 27445 27445
Sum 3076 3064 3221 3045 3352 3390 3551 3594 3465 3546 3191 3081 27445 67021

Distribución del peso al nacer: controversia con las unidades de medida

El peso al nacer está registrado tanto en gramos como en kilos.

Se intentó identificar los casos registrados en kilos y transformarlo a gramos. Se considera demasiado complicado y muchos casos no sabían resolverse. Además, la variable ‘edad gestacional’ tampoco está debidamente informada, por lo que no puede usarse para inferir el peso en gramos o kilos.

Distribución del peso al nacimiento:

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
      0    2660    3135    2994    3470 2777777    5961 

Distribución del peso al nacimiento por semana gestacional:

Los datos en la región verde se consideran debidamente informados. Se eliminan el resto de valores. Se puede intentar corregir los registros de arriba a la izquierda (la semana gestacional parece estar en meses, no en día) y abajo a la derecha (los datos parecen estar en kilos y no en gramos).

Antes: 67021. Después: 48665. Eliminados: 18356

Filtramos los valores de Apgar (1MIN/5MIN) superiores a 10

Valores de Apgar 1 minuto superiores a diez:


FALSE  TRUE  <NA> 
41141    74  7450 

Valores de Apgar 5 minutos superiores a diez:


FALSE  TRUE  <NA> 
39455    86  9124 
Antes: 48665. Después: 48505. Eliminados: 160

3.1.1 Warnings (dudas)

Advertencia
  • ¿Diferencia entre e.maternal y e.madre?
               e. maternal
e.madre_missing    No    Sí  <NA>
          FALSE  6984 27626 11926
          TRUE     96   596  1277
          <NA>      0     0     0
  • ¿Puede ser tipo de lactancia materna pero tener fórmulas especiales?
            
                No    Sí  <NA>
  Materna     2011   394 22163
  Artificial   863   369  6444
  Mixta        767   285  6791
  <NA>          11    14  8393
  • Relación entre ‘Test metabolopatías’, ‘Resultado test metabolopatías’.
      
       Normal Patológica  <NA>
  No      104          1    60
  Sí    38539        263  8214
  <NA>    587          5   732

Si hay resultado del test de metabolopatías entonces el test se marca como “Sí”, y si el resultado es NA entonces el test se marca como “No”.

      
       Normal Patológica  <NA>
  No        0          0  9006
  Sí    39230        269     0
  <NA>      0          0     0
  • Edad gestacional no podemos usarla: posiblemente haya valores en meses, otros en días y otros valores son demasiado extremos.

(edad gestacional original, antes de eliminar filtrar por los casos en verde)

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
      2      38      39     257      40 4017082    9398 

3.2 Pediatría y Protocolo salud

La base de datos de ‘protocolo salud’ contienen los cuestionarios de educación de lactancia: la escala de valoración LACTH y el test de Matthew.

# A tibble: 6 × 9
  CIP_ANON   Fechadenacimiento   sexo   testdeMatthew     EscaladevaloracionLA…¹
  <chr>      <dttm>              <chr>  <chr>             <chr>                 
1 1001248772 2022-10-07 00:00:00 MUJER  12 - LACTANCIA E… 10 - Sin dificultad/s…
2 1001303052 2022-07-30 00:00:00 MUJER  <NA>              <NA>                  
3 1001366112 2022-08-21 00:00:00 MUJER  12 - LACTANCIA E… 10 - Sin dificultad/s…
4 1001849002 2022-08-10 00:00:00 HOMBRE <NA>              <NA>                  
5 1002179042 2022-06-20 00:00:00 HOMBRE << No Procede >>  << No Procede >>      
6 1002899452 2021-11-04 00:00:00 HOMBRE <NA>              <NA>                  
# ℹ abbreviated name: ¹​EscaladevaloracionLACTH
# ℹ 4 more variables: motivoabandonodelactancia <chr>,
#   alimentacioncomplementaria <chr>, Tipodelecheartificial <chr>,
#   Calendariovacunacion <chr>

CIPs de protocolo que están en pediatría:


FALSE  TRUE 
41545  6960 

CIPs de pediatría que están en protocolo:


FALSE  TRUE 
 5775  6960 

Número de CIPs comunes en pediatría y protocolo salud:

[1] 6960

Distribución del año de nacimiento de los niños que tienen protocolo salud informado:

# A tibble: 5 × 4
  year_nacimiento Pediatría `Protocolo salud` `Unión Ped-Prot`
  <fct>               <int>             <int>            <int>
1 2018                10216               868               75
2 2019                10034               790               75
3 2020                 9412               498               69
4 2021                 9381               811              156
5 2022                 9462              9768             6585

El registro de la escala de valoración LACTH y el test Matthew está implementado en la práctica clínica de forma voluntaria: el especialista decide si quiere recoger o no esta información. Desde 2022 -repasarlo con Esmeralda- creo que está relacionado con los programas de promoción de la leche materna para que se registre esta información.

Escala de valoración LACTH

Ejemplos de la escala de valoración de LACTH en la base de datos protocolo salud:

 [1] NA                                    
 [2] "10 - sin dificultad/situación óptima"
 [3] "9 - sin dificultad/situación óptima" 
 [4] "<< no procede >>"                    
 [5] "7 - dificultad moderada"             
 [6] "8 - dificultad moderada"             
 [7] "0 - importante dificultad"           
 [8] "n"                                   
 [9] "3 - importante dificultad"           
[10] "6 - dificultad moderada"             

Conservamos el resultado numérico de la escala de valoración LACTH únicamente cuando toma valores entre 0 y 10. En otro caso se clasifica como sin determinar, excepto cuando corresponde a no procede, que se mantiene como categoría específica.


         0         10          2          3          4          5          6 
        16        757          5          8         21         26         51 
         7          8          9 no procede       <NA> 
        78        116        169        935       4778 

Ejemplos de la variable test de Matthew en la base de datos protocolo salud:

 [1] NA                                 "12 - lactancia eficiente"        
 [3] "<< no procede >>"                 "8 - lact. medianamente eficiente"
 [5] "11 - lactancia eficiente"         "4 - lactancia deficiente"        
 [7] "9 - lact. medianamente eficiente" "10 - lactancia eficiente"        
 [9] "6 - lactancia deficiente"         "adecuada"                        

Conservamos el resultado numérico del test de Matthew únicamente cuando toma valores entre 0 y 10. En otro caso se clasifica como sin determinar, excepto cuando corresponde a no procede, que se mantiene como categoría específica.


         0          1         10          2          3          4          5 
         7          3         98          3          4          7         14 
         6          7          8          9 no procede       <NA> 
        18         24         46         64        578       6094 

Creamos las variables categóricas con los niveles asociados a la escala de valoración LACTH y el test de Matthew. Los registros no informados se clasifican como sin determinar, excepto cuando corresponde a no procede, que se mantiene como categoría específica.


            dificultad moderada           importante dificultad 
                            367                              37 
                     no procede                  sin determinar 
                           1200                            9971 
sin dificultad/situación óptima                            <NA> 
                           1160                               0 

            lactancia deficiente              lactancia eficiente 
                              71                             3098 
lactancia medianamente eficiente                       no procede 
                             164                              754 
                  sin determinar                             <NA> 
                            8648                                0 

3.3 Hospitalización

Total filas:

[1] 4991

Combinaciones únicas (CIP_ANON, FEC_NAC):

4449 filas, 2 columnas

Pacientes únicos:

[1] 4449

¿Cada CIP_ANON tiene una única FEC_NAC?

[1] "Sí"
Tenemos 532 registros en la base de datos 'hospitalización' sin código de ZBS.

Casos con ZBS no informado:


FALSE  TRUE 
 4459   532 

Aparentemente, un CENTRO no está asociado únicamente a un ZBS en la base de datos.

# A tibble: 6 × 3
  CENTRO year_ingreso `Nº de ZBS asociados`
  <chr>         <dbl>                 <int>
1 020019         2017                     5
2 020019         2018                    33
3 020019         2019                    33
4 020019         2020                    27
5 020019         2021                    25
6 020019         2022                    32
# A tibble: 6 × 4
  CENTRO CIP_ANON   year_ingreso ZBS   
  <chr>  <chr>             <dbl> <chr> 
1 020019 5665583571         2017 110114
2 020019 944587651          2017 110123
3 020019 4445782031         2017 110128
4 020019 4650589171         2017 110128
5 020019 1272977181         2017 110130
6 020019 6495410181         2017 110130

Existen casos en los que un mismo CIP presenta más de una hospitalización y algunos registros tienen el campo ZBS informado mientras que otros registros no. Para imputar los registros de ZBS sin informar, a cada CIP le asigno las visitas de cada añoal mismo ZBS siempre.

hospitalizacion |> mutate(year_ingreso = year(FEC_ING)) |> filter(CIP_ANON==2967241511) |> select(CENTRO, CIP_ANON, year_ingreso, ZBS, D1:D3)
## # A tibble: 6 × 7
##   CENTRO CIP_ANON   year_ingreso ZBS    D1    D2     D3    
##   <chr>  <chr>             <dbl> <chr>  <chr> <chr>  <chr> 
## 1 130087 2967241511         2018 110222 J22   R06.02 G12.0 
## 2 130087 2967241511         2018 110222 J22   J96.20 G12.0 
## 3 130087 2967241511         2018 110222 J22   R06.02 G12.0 
## 4 130087 2967241511         2018 110222 J22   G12.0  Z82.79
## 5 130127 2967241511         2018 <NA>   J21.0 J96.10 G12.0 
## 6 130127 2967241511         2018 <NA>   J06.9 J96.10 G12.0
# A tibble: 6 × 7
  CENTRO CIP_ANON   year_ingreso ZBS    D1    D2     D3    
  <chr>  <chr>             <dbl> <chr>  <chr> <chr>  <chr> 
1 130087 2967241511         2018 110222 J22   R06.02 G12.0 
2 130087 2967241511         2018 110222 J22   J96.20 G12.0 
3 130087 2967241511         2018 110222 J22   R06.02 G12.0 
4 130087 2967241511         2018 110222 J22   G12.0  Z82.79
5 130127 2967241511         2018 110222 J21.0 J96.10 G12.0 
6 130127 2967241511         2018 110222 J06.9 J96.10 G12.0 
# A tibble: 6 × 3
  CENTRO year_ingreso `Nº de ZBS asociados`
  <chr>         <dbl>                 <int>
1 020019         2017                     5
2 020019         2018                    33
3 020019         2019                    33
4 020019         2020                    27
5 020019         2021                    25
6 020019         2022                    32

No se consigue reducir mucho el número de casos con ZBS no informado:


FALSE  TRUE 
 4503   488 

3.4 Patologías

Cabecera de diagnósticos en la base de datos hospitalización:

# A tibble: 6 × 12
  D1     D2    D3    D4    D5    D6    D7    D8    D9    D10   D11   D12  
  <chr>  <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 A08.39 E86.0 <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
2 J06.9  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
3 J21.9  J18.9 K52.9 Q18.1 <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
4 K52.9  E86.0 B15.9 <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
5 B34.9  D70.9 <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
6 A04.5  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> 
[1] 533
Códigos de diagnóstico en las columnas D1-D12 sin descripción: 533
Top códigos faltantes (n): A04.5 (1), A04.6 (1), A04.8 (1), A04.9 (1), A08.0 (1)

3.5 Grupos Relacionados por el Diagnóstico (Portal Estadístico)

El descriptivo de algunos GDR ha cambiado a lo largo de los años.

GRD CDM GRD Severidad 2016 2017 2018 2019 2020 2021 2022 2023 2024
144-ENFERMEDADES MISCELANEAS, SIGNOS Y SÍNTOMAS DE APARATO RESPIRATORIO 144 2 NA NA NA NA NA NA 3291.16 3680.56 3738.68
144-OTROS DIAGNÓSTICOS MENORES, SIGNOS Y SÍNTOMAS DE APARATO RESPIRATORIO 144 2 2668.67 2600.99 2668.23 2735.23 3076.6 2962.19 NA NA NA

Agrupo la información a nivel código de GRD e ignoro el descriptivo.

GRD Severidad 2016 2017 2018 2019 2020 2021 2022 2023 2024
144 2 2668.67 2600.99 2668.23 2735.23 3076.6 2962.19 3291.16 3680.56 3738.68