Pirámide de población de Cambados (2023)

En este documento, vamos a ver cómo llevar a cabo el graficado de una pirámide de población empleando para ello:

Un fichero en formato CSV (valores separados por comas) que contenga los datos relativos a los habitantes de un lugar (edad, género, parroquia, ….)

La carga de una serie de paquetes que nos permitirán manejar dichos datos y que en nuestro caso es “pyramid”.

Comencemos pues, para ello precisaremos el fichero de datos “actual.csv” que podremos descargar directamente pulsando sobre el nombre del fichero.

datos<-read.csv2("actual.csv")

Primeros pasos

Determinar la carpeta que contiene el fichero de datos “actual.csv” para lo que llevaremos a cabo los siguientes procedimientos:

getwd() #determinamos cuál es el directorio inicial de trabajo
## [1] "/Users/manurial/Desktop"
setwd("/Users/manurial/Desktop") #cambiamos de directorio, para ello echamos mano de la terminal para determinar el directorio de trabajo que en nuestro caso es el Escritorio. No te olvides que esta ruta varía con el ordenador con el que trabajemos y el usuario activo.

Carga del fichero de datos

Ahora procedemos a cargar el fichero de datos, por lo que, es fundamental llevar a cabo el procedemiento previo

datos<-read.csv2("actual.csv") #leemos el fichero csv que contiene los datos y lo almacenamos en la variable datos

Para una vez hecho, determinar el tipo de datos que manejamos con la función “str

str(datos)  #comprobamos la estructura de datos
## 'data.frame':    14360 obs. of  11 variables:
##  $ fechanac    : chr  "19/12/2000" "27/08/2015" "14/06/2016" "01/02/2012" ...
##  $ edad        : int  22 7 6 11 13 4 21 35 83 40 ...
##  $ fechalta    : chr  "26/09/2022" "27/08/2015" "14/06/2016" "01/02/2012" ...
##  $ genero      : int  6 6 1 6 1 6 1 6 6 6 ...
##  $ pais_nac    : int  410 108 108 108 108 108 351 108 108 108 ...
##  $ nacionalidad: int  410 108 108 108 108 108 108 108 108 108 ...
##  $ europeo     : chr  "N" "S" "S" "S" ...
##  $ distrito    : int  2 2 1 1 1 1 2 3 2 1 ...
##  $ seccion     : int  1 4 1 1 1 1 1 1 1 1 ...
##  $ parroquia   : int  100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 ...
##  $ estudios    : int  46 0 0 0 0 0 31 32 30 20 ...

Ahora llevamos a cabo el conocer cómo se llaman las columnas del fichero csv que contiene los datos.

##  [1] "fechanac"     "edad"         "fechalta"     "genero"       "pais_nac"    
##  [6] "nacionalidad" "europeo"      "distrito"     "seccion"      "parroquia"   
## [11] "estudios"

Para, determinar la tabla de frecuencia de los mismos mediante la función “table

frecuencias<-table(datos$genero , datos$edad) #creamos una tabla de frecuencias a partir de las columnas género y edad

frecuencias
##    
##       0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
##   1  42  43  50  42  54  50  59  50  63  46  77  65  66  77  80  73  99  75  71
##   6  36  46  51  38  47  50  35  70  55  59  55  70  64  89  71  66  68  80  64
##    
##      19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37
##   1  80  73  85  76  73  62  64  60  67  70  70  71  64  88  79  93  82  84  82
##   6  65  72  84  64  76  72  77  82  71  59  56  70  89  62  84  70  80  68  86
##    
##      38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56
##   1  83  85  94 107 121 147 129 107 117 106 135 132 127 131 128 118 109 110 102
##   6  99  91 113  99 126 123 123 138 126 140 142 137 124 138 105 128 116 117 110
##    
##      57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75
##   1 118 112  97 100  99  95  72  86  77  75  75  84  82  63  65  58  57  88  57
##   6  95 105  96  85 110  98  93  98  91  94  69  79  80  70  78  67  73  99  79
##    
##      76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94
##   1  52  81  51  56  48  34  44  17  31  21  31  29  23  20  12  13   6  10   4
##   6  65  96  72  66  68  60  47  64  34  46  52  42  37  50  28  20  22  17  11
##    
##      95  96  97  98  99 100 101 102 103 104 105 106 107 108 110 114 123
##   1   6   5   1   1   2   1   1   0   1   0   0   1   0   1   0   0   1
##   6  10   5   5   7   3   2   2   3   2   2   2   3   1   1   1   1   0

Ahora vamos a determinar, en función del género, la distribución de frecuencias, observa cómo:

xgeneros<-table(datos$edad, datos$genero==1) #elaboramos una tabla de frecuencias que contenga los datos de edad y género ordenados por género

xgeneros #mostramos la tabla
##      
##       FALSE TRUE
##   0      36   42
##   1      46   43
##   2      51   50
##   3      38   42
##   4      47   54
##   5      50   50
##   6      35   59
##   7      70   50
##   8      55   63
##   9      59   46
##   10     55   77
##   11     70   65
##   12     64   66
##   13     89   77
##   14     71   80
##   15     66   73
##   16     68   99
##   17     80   75
##   18     64   71
##   19     65   80
##   20     72   73
##   21     84   85
##   22     64   76
##   23     76   73
##   24     72   62
##   25     77   64
##   26     82   60
##   27     71   67
##   28     59   70
##   29     56   70
##   30     70   71
##   31     89   64
##   32     62   88
##   33     84   79
##   34     70   93
##   35     80   82
##   36     68   84
##   37     86   82
##   38     99   83
##   39     91   85
##   40    113   94
##   41     99  107
##   42    126  121
##   43    123  147
##   44    123  129
##   45    138  107
##   46    126  117
##   47    140  106
##   48    142  135
##   49    137  132
##   50    124  127
##   51    138  131
##   52    105  128
##   53    128  118
##   54    116  109
##   55    117  110
##   56    110  102
##   57     95  118
##   58    105  112
##   59     96   97
##   60     85  100
##   61    110   99
##   62     98   95
##   63     93   72
##   64     98   86
##   65     91   77
##   66     94   75
##   67     69   75
##   68     79   84
##   69     80   82
##   70     70   63
##   71     78   65
##   72     67   58
##   73     73   57
##   74     99   88
##   75     79   57
##   76     65   52
##   77     96   81
##   78     72   51
##   79     66   56
##   80     68   48
##   81     60   34
##   82     47   44
##   83     64   17
##   84     34   31
##   85     46   21
##   86     52   31
##   87     42   29
##   88     37   23
##   89     50   20
##   90     28   12
##   91     20   13
##   92     22    6
##   93     17   10
##   94     11    4
##   95     10    6
##   96      5    5
##   97      5    1
##   98      7    1
##   99      3    2
##   100     2    1
##   101     2    1
##   102     3    0
##   103     2    1
##   104     2    0
##   105     2    0
##   106     3    1
##   107     1    0
##   108     1    1
##   110     1    0
##   114     1    0
##   123     0    1
xgeneros<-matrix(xgeneros,ncol=2,byrow = FALSE) #creamos ahora una tabla con los datos previos

xgeneros #y los mostramos
##        [,1] [,2]
##   [1,]   36   42
##   [2,]   46   43
##   [3,]   51   50
##   [4,]   38   42
##   [5,]   47   54
##   [6,]   50   50
##   [7,]   35   59
##   [8,]   70   50
##   [9,]   55   63
##  [10,]   59   46
##  [11,]   55   77
##  [12,]   70   65
##  [13,]   64   66
##  [14,]   89   77
##  [15,]   71   80
##  [16,]   66   73
##  [17,]   68   99
##  [18,]   80   75
##  [19,]   64   71
##  [20,]   65   80
##  [21,]   72   73
##  [22,]   84   85
##  [23,]   64   76
##  [24,]   76   73
##  [25,]   72   62
##  [26,]   77   64
##  [27,]   82   60
##  [28,]   71   67
##  [29,]   59   70
##  [30,]   56   70
##  [31,]   70   71
##  [32,]   89   64
##  [33,]   62   88
##  [34,]   84   79
##  [35,]   70   93
##  [36,]   80   82
##  [37,]   68   84
##  [38,]   86   82
##  [39,]   99   83
##  [40,]   91   85
##  [41,]  113   94
##  [42,]   99  107
##  [43,]  126  121
##  [44,]  123  147
##  [45,]  123  129
##  [46,]  138  107
##  [47,]  126  117
##  [48,]  140  106
##  [49,]  142  135
##  [50,]  137  132
##  [51,]  124  127
##  [52,]  138  131
##  [53,]  105  128
##  [54,]  128  118
##  [55,]  116  109
##  [56,]  117  110
##  [57,]  110  102
##  [58,]   95  118
##  [59,]  105  112
##  [60,]   96   97
##  [61,]   85  100
##  [62,]  110   99
##  [63,]   98   95
##  [64,]   93   72
##  [65,]   98   86
##  [66,]   91   77
##  [67,]   94   75
##  [68,]   69   75
##  [69,]   79   84
##  [70,]   80   82
##  [71,]   70   63
##  [72,]   78   65
##  [73,]   67   58
##  [74,]   73   57
##  [75,]   99   88
##  [76,]   79   57
##  [77,]   65   52
##  [78,]   96   81
##  [79,]   72   51
##  [80,]   66   56
##  [81,]   68   48
##  [82,]   60   34
##  [83,]   47   44
##  [84,]   64   17
##  [85,]   34   31
##  [86,]   46   21
##  [87,]   52   31
##  [88,]   42   29
##  [89,]   37   23
##  [90,]   50   20
##  [91,]   28   12
##  [92,]   20   13
##  [93,]   22    6
##  [94,]   17   10
##  [95,]   11    4
##  [96,]   10    6
##  [97,]    5    5
##  [98,]    5    1
##  [99,]    7    1
## [100,]    3    2
## [101,]    2    1
## [102,]    2    1
## [103,]    3    0
## [104,]    2    1
## [105,]    2    0
## [106,]    2    0
## [107,]    3    1
## [108,]    1    0
## [109,]    1    1
## [110,]    1    0
## [111,]    1    0
## [112,]    0    1

Conviertiendo los datos a una matriz de 2 columnas

xgeneros<-matrix(xgeneros,ncol=2,byrow = FALSE) #creamos ahora una tabla con los datos previos

xgeneros #y los mostramos
##        [,1] [,2]
##   [1,]   36   42
##   [2,]   46   43
##   [3,]   51   50
##   [4,]   38   42
##   [5,]   47   54
##   [6,]   50   50
##   [7,]   35   59
##   [8,]   70   50
##   [9,]   55   63
##  [10,]   59   46
##  [11,]   55   77
##  [12,]   70   65
##  [13,]   64   66
##  [14,]   89   77
##  [15,]   71   80
##  [16,]   66   73
##  [17,]   68   99
##  [18,]   80   75
##  [19,]   64   71
##  [20,]   65   80
##  [21,]   72   73
##  [22,]   84   85
##  [23,]   64   76
##  [24,]   76   73
##  [25,]   72   62
##  [26,]   77   64
##  [27,]   82   60
##  [28,]   71   67
##  [29,]   59   70
##  [30,]   56   70
##  [31,]   70   71
##  [32,]   89   64
##  [33,]   62   88
##  [34,]   84   79
##  [35,]   70   93
##  [36,]   80   82
##  [37,]   68   84
##  [38,]   86   82
##  [39,]   99   83
##  [40,]   91   85
##  [41,]  113   94
##  [42,]   99  107
##  [43,]  126  121
##  [44,]  123  147
##  [45,]  123  129
##  [46,]  138  107
##  [47,]  126  117
##  [48,]  140  106
##  [49,]  142  135
##  [50,]  137  132
##  [51,]  124  127
##  [52,]  138  131
##  [53,]  105  128
##  [54,]  128  118
##  [55,]  116  109
##  [56,]  117  110
##  [57,]  110  102
##  [58,]   95  118
##  [59,]  105  112
##  [60,]   96   97
##  [61,]   85  100
##  [62,]  110   99
##  [63,]   98   95
##  [64,]   93   72
##  [65,]   98   86
##  [66,]   91   77
##  [67,]   94   75
##  [68,]   69   75
##  [69,]   79   84
##  [70,]   80   82
##  [71,]   70   63
##  [72,]   78   65
##  [73,]   67   58
##  [74,]   73   57
##  [75,]   99   88
##  [76,]   79   57
##  [77,]   65   52
##  [78,]   96   81
##  [79,]   72   51
##  [80,]   66   56
##  [81,]   68   48
##  [82,]   60   34
##  [83,]   47   44
##  [84,]   64   17
##  [85,]   34   31
##  [86,]   46   21
##  [87,]   52   31
##  [88,]   42   29
##  [89,]   37   23
##  [90,]   50   20
##  [91,]   28   12
##  [92,]   20   13
##  [93,]   22    6
##  [94,]   17   10
##  [95,]   11    4
##  [96,]   10    6
##  [97,]    5    5
##  [98,]    5    1
##  [99,]    7    1
## [100,]    3    2
## [101,]    2    1
## [102,]    2    1
## [103,]    3    0
## [104,]    2    1
## [105,]    2    0
## [106,]    2    0
## [107,]    3    1
## [108,]    1    0
## [109,]    1    1
## [110,]    1    0
## [111,]    1    0
## [112,]    0    1

Procediendo a separar los géneros en dos variables

HH<-xgeneros[1:112,1] #separamos los hombres en la variable HH

MM<-xgeneros[1:112,2] #separamos las mujeres en la variable MM

HH #mostramos los hombres
##   [1]  36  46  51  38  47  50  35  70  55  59  55  70  64  89  71  66  68  80
##  [19]  64  65  72  84  64  76  72  77  82  71  59  56  70  89  62  84  70  80
##  [37]  68  86  99  91 113  99 126 123 123 138 126 140 142 137 124 138 105 128
##  [55] 116 117 110  95 105  96  85 110  98  93  98  91  94  69  79  80  70  78
##  [73]  67  73  99  79  65  96  72  66  68  60  47  64  34  46  52  42  37  50
##  [91]  28  20  22  17  11  10   5   5   7   3   2   2   3   2   2   2   3   1
## [109]   1   1   1   0
MM #mostramos las mujeres
##   [1]  42  43  50  42  54  50  59  50  63  46  77  65  66  77  80  73  99  75
##  [19]  71  80  73  85  76  73  62  64  60  67  70  70  71  64  88  79  93  82
##  [37]  84  82  83  85  94 107 121 147 129 107 117 106 135 132 127 131 128 118
##  [55] 109 110 102 118 112  97 100  99  95  72  86  77  75  75  84  82  63  65
##  [73]  58  57  88  57  52  81  51  56  48  34  44  17  31  21  31  29  23  20
##  [91]  12  13   6  10   4   6   5   1   1   2   1   1   0   1   0   0   1   0
## [109]   1   0   0   1

Llegados a este punto, precisamos un dataset que contenga los rangos de edades….

Edades<-c("[0-1)","[1-2)","[2-3)","[3-4)","[4-5)","[5-6)","[6-7)","[7-8)","[8-9)","[9-10)","[10-11)","[11-12)","[12-13)","[13-14)","[14-15)","[15-16)","[16-17)","[17-18)","[18-19)","[19-20)","[20-21)","[21-22)","[22-23)","[23-24)","[24-25)","[25-26)","[26-27)","[27-28)","[28-29)","[29-30)","[30-31)","[31-32)","[32-33)","[33-34)","[34-35)","[35-36)","[36-37)","[37-38)","[38-39)","[39-40)","[40-41)","[41-42)","[42-43)","[43-44)","[44-45)","[45-46)","[46-47)","[47-48)","[48-49)","[49-50)","[50-51)","[51-52)","[52-53)","[53-54)","[54-55)","[55-56)","[56-57)","[57-58)","[58-59)","[59-60)","[60-61)","[61-62)","[62-63)","[63-64)","[64-65)","[65-66)","[66-67)","[67-68)","[68-69)","[69-70)","[70-71)","[71-72)","[72-73)","[73-74)","[74-75)","[75-76)","[76-77)","[77-78)","[78-79)","[79-80)","[80-81)","[81-82)","[82-83)","[83-84)","[84-85)","[85-86)","[86-87)","[87-88)","[88-89)","[89-90)","[90-91)","[91-92)","[92-93)","[93-94)","[94-95)","[95-96)","[96-97)","[97-98)","[98-99)","[99-100)","[100-101)","[101-102)","[102-103)","[103-104)","[104-105)","[105-106)","[106-107)","[107-108)","[108-109)","[109-110)","[110-111)","[111-112]")

Y crear un dataframe que contenga los valores de Hombres, Mujeres y Edades

datos<-data.frame(HH,MM,Edades)

Y mostar el gráfico correspondiente a la pirámide de población analizada

library(pyramid)

pyramid(datos,Llab="Homes",Rlab="Mulleres",Clab="Edad",main="Población Cambados \n 2023",Lcol="red", Rcol="blue", Cgap=0.5, Csize=0.8, Cstep=5)