datos <- read.csv("C:/Users/DANIELA SANZ/Downloads/estadisticas_vitales_mexico_2018_2021.csv")
plot(cars)

print(datos)
  anio poblacion_total nacimientos_registrados defunciones_registradas
1 2018       124738000                 2162535                  722611
2 2019       125930000                 2092214                  747784
3 2020       126014024                 1629211                 1086743
4 2021       126705138                 1912178                 1122249
  incremento_natural casos_covid_confirmados
1            1439924                       0
2            1344430                       0
3             542468                 1437185
4             789929                      NA
  defunciones_covid_confirmadas
1                             0
2                             0
3                        126507
4                            NA
#df
nacimientos <- datos$nacimientos_registrados
total_poblacion <- datos$poblacion_total
#calculo de tasa de natalidad 
tasa_natalidad <- (nacimientos/total_poblacion)*1000
#resultado
cat("tasa de natalidad:",
mean (tasa_natalidad, na.rm = TRUE), 
"nacimientos 1000 habitantes durante el periodo 2018-2021\n")
tasa de natalidad: 15.49277 nacimientos 1000 habitantes durante el periodo 2018-2021

datos$tasa_natalidad <- (datos$nacimientos_registrados/ datos$poblacion_total) * 1000 
datos [, c("anio", "tasa_natalidad")]
datos$tasa_natalidad <- (datos$nacimientos_registrados/ datos$poblacion_total)* 1000

#grafico
ggplot(datos, aes(x = anio, y = tasa_natalidad, fill = anio)) + geom_bar (stat = "identity") + geom_text(aes(label = round(tasa_natalidad, 2)),vjust = -0.3, size = 4) +  labs(title = "tasa natalidad por año", x = "anio", y = "tasa de natalidad (por 1,000 habitantes)") + theme_classic()

#calculo de la tasa de mortalidad
tasa_mortalidad <- (datos$defunciones_registradas/datos$poblacion_total) * 1000

datos$tasa_mortalidad <- (datos$defunciones_registradas/datos$poblacion_total) * 1000

datos[, c("anio", "tasa_mortalidad")]
NA

# Resultado
cat("Tasa de mortalidad:", 
    mean(tasa_mortalidad, na.rm = TRUE), 
    "muertes por cada 1,000 habitantes durante el periodo 2018-2021\n")
Tasa de mortalidad: 7.303069 muertes por cada 1,000 habitantes durante el periodo 2018-2021

#grafico
ggplot(datos, aes(x = anio, y = tasa_mortalidad, fill = anio)) + geom_bar (stat = "identity") + geom_text(aes(label = round(tasa_mortalidad, 2)),vjust = -0.3, size = 4) +  labs(title = "tasa mortalidad por año", x = "anio", y = "tasa de mortalidas(por 1,000 habitantes)") + theme_classic()

incremento_natural <- (tasa_natalidad - tasa_mortalidad)
datos$incremento_natural <- datos$tasa_natalidad - datos$tasa_mortalidad
datos[, c("anio", "incremento_natural")]
# Resultado
cat("Incremento natural", 
    # decidí sacar el promedio porque de la forma básica me arroja 3 vectores.
    mean(incremento_natural, na.rm = TRUE), 
    "por cada 1,000 habitantes durante el periodo 2018-2021\n")
Incremento natural 8.189702 por cada 1,000 habitantes durante el periodo 2018-2021
str(datos)
'data.frame':   4 obs. of  10 variables:
 $ año                          : num  2018 2019 2020 2021
 $ poblacion_total              : num  1.25e+08 1.26e+08 1.26e+08 1.27e+08
 $ nacimientos_registrados      : num  2162535 2092214 1629211 1912178
 $ defunciones_registradas      : num  722611 747784 1086743 1122249
 $ casos_covid_confirmados      : num  0 0 1437185 0
 $ defunciones_covid_confirmadas: num  0 0 126507 0
 $ tasa_natalidad               : num  17.3 16.6 12.9 15.1
 $ tasa_mortalidad              : num  5.79 5.94 8.62 8.86
 $ incremento_natural           : num  11.54 10.68 4.3 6.23
 $ tasa_letalidad               : num  NaN NaN 8.8 NaN
'datos':   4 obs. of  9 variables:
Error: unexpected symbol en "'datos':   4 obs."

ggplot(datos, aes(x = anio, y = incremento_natural)) +
  geom_line(linewidth = 1) +
  geom_point(size = 3) +
  geom_text(
    aes(label = round(incremento_natural, 2)),
    vjust = -1.5,
    size = 4
  ) +
  scale_y_continuous(expand = expansion(mult = c(0.05, 0.2))) +
  labs(
    title = "Dinámica del incremento natural de la población",
    x = "Anio",
    y = "Incremento natural (por cada 1,000 habitantes)"
  ) +
  theme_minimal()

# Resultado
cat("Letalidad por Covid-19 fue de", 
   #mean(porc_letalidad, na.rm = TRUE), 
    "% durante 2020.\n ")
Letalidad por Covid-19 fue de % durante 2020.
 
datos$letalidad_covid <- (datos$defunciones_covid_confirmadas / datos$casos_covid_confirmados) * 100

datos[, c("anio", "letalidad_covid")]
datos_letalidad <- datos[datos$casos_covid_confirmados > 0, c("anio", "letalidad_covid")]

datos_letalidad
letalidad_valida <- letalidad[!is.na(letalidad) & !is.nan(letalidad)]
Error: objeto 'letalidad' no encontrado
datos <- data.frame(
  año = c(2018, 2019, 2020, 2021),
  poblacion_total = c(124738000, 125930000, 126014024, 126705138),
  nacimientos_registrados = c(2162535, 2092214, 1629211, 1912178),
  defunciones_registradas = c(722611, 747784, 1086743, 1122249),
  casos_covid_confirmados = c(0, 0, 1437185, 0),
  defunciones_covid_confirmadas = c(0, 0, 126507, 0)
)

datos$tasa_natalidad <- (datos$nacimientos_registrados /
                         datos$poblacion_total) * 1000

datos$tasa_mortalidad <- (datos$defunciones_registradas /
                          datos$poblacion_total) * 1000

datos$incremento_natural <- datos$tasa_natalidad - datos$tasa_mortalidad

datos$tasa_letalidad <- (datos$defunciones_covid_confirmadas / datos$casos_covid_confirmados) * 100

# Redondear solo columnas númericas
datos_redondeados <- datos %>%
  mutate_if(is.numeric, round, 2)

# Crear la tabla con flextable
flextable(datos_redondeados) %>%
  autofit()

año

poblacion_total

nacimientos_registrados

defunciones_registradas

casos_covid_confirmados

defunciones_covid_confirmadas

tasa_natalidad

tasa_mortalidad

incremento_natural

tasa_letalidad

2,018

124,738,000

2,162,535

722,611

0

0

17.34

5.79

11.54

2,019

125,930,000

2,092,214

747,784

0

0

16.61

5.94

10.68

2,020

126,014,024

1,629,211

1,086,743

1,437,185

126,507

12.93

8.62

4.30

8.8

2,021

126,705,138

1,912,178

1,122,249

0

0

15.09

8.86

6.23

LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCmBgYHtyfQ0KZGF0b3MgPC0gcmVhZC5jc3YoIkM6L1VzZXJzL0RBTklFTEEgU0FOWi9Eb3dubG9hZHMvZXN0YWRpc3RpY2FzX3ZpdGFsZXNfbWV4aWNvXzIwMThfMjAyMS5jc3YiKQ0KcGxvdChjYXJzKQ0KcHJpbnQoZGF0b3MpDQpgYGANCg0KYGBge3J9DQojZGYNCm5hY2ltaWVudG9zIDwtIGRhdG9zJG5hY2ltaWVudG9zX3JlZ2lzdHJhZG9zDQp0b3RhbF9wb2JsYWNpb24gPC0gZGF0b3MkcG9ibGFjaW9uX3RvdGFsDQojY2FsY3VsbyBkZSB0YXNhIGRlIG5hdGFsaWRhZCANCnRhc2FfbmF0YWxpZGFkIDwtIChuYWNpbWllbnRvcy90b3RhbF9wb2JsYWNpb24pKjEwMDANCiNyZXN1bHRhZG8NCmNhdCgidGFzYSBkZSBuYXRhbGlkYWQ6IiwNCm1lYW4gKHRhc2FfbmF0YWxpZGFkLCBuYS5ybSA9IFRSVUUpLCANCiJuYWNpbWllbnRvcyAxMDAwIGhhYml0YW50ZXMgZHVyYW50ZSBlbCBwZXJpb2RvIDIwMTgtMjAyMVxuIikNCg0KDQpgYGANCmBgYHtyfQ0KDQpkYXRvcyR0YXNhX25hdGFsaWRhZCA8LSAoZGF0b3MkbmFjaW1pZW50b3NfcmVnaXN0cmFkb3MvIGRhdG9zJHBvYmxhY2lvbl90b3RhbCkgKiAxMDAwIA0KZGF0b3MgWywgYygiYW5pbyIsICJ0YXNhX25hdGFsaWRhZCIpXQ0KYGBgDQpgYGB7cn0NCmRhdG9zJHRhc2FfbmF0YWxpZGFkIDwtIChkYXRvcyRuYWNpbWllbnRvc19yZWdpc3RyYWRvcy8gZGF0b3MkcG9ibGFjaW9uX3RvdGFsKSogMTAwMA0KDQojZ3JhZmljbw0KZ2dwbG90KGRhdG9zLCBhZXMoeCA9IGFuaW8sIHkgPSB0YXNhX25hdGFsaWRhZCwgZmlsbCA9IGFuaW8pKSArIGdlb21fYmFyIChzdGF0ID0gImlkZW50aXR5IikgKyBnZW9tX3RleHQoYWVzKGxhYmVsID0gcm91bmQodGFzYV9uYXRhbGlkYWQsIDIpKSx2anVzdCA9IC0wLjMsIHNpemUgPSA0KSArICBsYWJzKHRpdGxlID0gInRhc2EgbmF0YWxpZGFkIHBvciBhw7FvIiwgeCA9ICJhbmlvIiwgeSA9ICJ0YXNhIGRlIG5hdGFsaWRhZCAocG9yIDEsMDAwIGhhYml0YW50ZXMpIikgKyB0aGVtZV9jbGFzc2ljKCkNCmBgYA0KDQoNCmBgYHtyfQ0KI2NhbGN1bG8gZGUgbGEgdGFzYSBkZSBtb3J0YWxpZGFkDQp0YXNhX21vcnRhbGlkYWQgPC0gKGRhdG9zJGRlZnVuY2lvbmVzX3JlZ2lzdHJhZGFzL2RhdG9zJHBvYmxhY2lvbl90b3RhbCkgKiAxMDAwDQoNCmRhdG9zJHRhc2FfbW9ydGFsaWRhZCA8LSAoZGF0b3MkZGVmdW5jaW9uZXNfcmVnaXN0cmFkYXMvZGF0b3MkcG9ibGFjaW9uX3RvdGFsKSAqIDEwMDANCg0KZGF0b3NbLCBjKCJhbmlvIiwgInRhc2FfbW9ydGFsaWRhZCIpXQ0KDQpgYGANCmBgYHtyfQ0KDQojIFJlc3VsdGFkbw0KY2F0KCJUYXNhIGRlIG1vcnRhbGlkYWQ6IiwgDQogICAgbWVhbih0YXNhX21vcnRhbGlkYWQsIG5hLnJtID0gVFJVRSksIA0KICAgICJtdWVydGVzIHBvciBjYWRhIDEsMDAwIGhhYml0YW50ZXMgZHVyYW50ZSBlbCBwZXJpb2RvIDIwMTgtMjAyMVxuIikNCmBgYA0KYGBge3J9DQoNCiNncmFmaWNvDQpnZ3Bsb3QoZGF0b3MsIGFlcyh4ID0gYW5pbywgeSA9IHRhc2FfbW9ydGFsaWRhZCwgZmlsbCA9IGFuaW8pKSArIGdlb21fYmFyIChzdGF0ID0gImlkZW50aXR5IikgKyBnZW9tX3RleHQoYWVzKGxhYmVsID0gcm91bmQodGFzYV9tb3J0YWxpZGFkLCAyKSksdmp1c3QgPSAtMC4zLCBzaXplID0gNCkgKyAgbGFicyh0aXRsZSA9ICJ0YXNhIG1vcnRhbGlkYWQgcG9yIGHDsW8iLCB4ID0gImFuaW8iLCB5ID0gInRhc2EgZGUgbW9ydGFsaWRhcyhwb3IgMSwwMDAgaGFiaXRhbnRlcykiKSArIHRoZW1lX2NsYXNzaWMoKQ0KYGBgDQpgYGB7cn0NCmluY3JlbWVudG9fbmF0dXJhbCA8LSAodGFzYV9uYXRhbGlkYWQgLSB0YXNhX21vcnRhbGlkYWQpDQpkYXRvcyRpbmNyZW1lbnRvX25hdHVyYWwgPC0gZGF0b3MkdGFzYV9uYXRhbGlkYWQgLSBkYXRvcyR0YXNhX21vcnRhbGlkYWQNCmRhdG9zWywgYygiYW5pbyIsICJpbmNyZW1lbnRvX25hdHVyYWwiKV0NCmBgYA0KYGBge3J9DQojIFJlc3VsdGFkbw0KY2F0KCJJbmNyZW1lbnRvIG5hdHVyYWwiLCANCiAgICAjIGRlY2lkw60gc2FjYXIgZWwgcHJvbWVkaW8gcG9ycXVlIGRlIGxhIGZvcm1hIGLDoXNpY2EgbWUgYXJyb2phIDMgdmVjdG9yZXMuDQogICAgbWVhbihpbmNyZW1lbnRvX25hdHVyYWwsIG5hLnJtID0gVFJVRSksIA0KICAgICJwb3IgY2FkYSAxLDAwMCBoYWJpdGFudGVzIGR1cmFudGUgZWwgcGVyaW9kbyAyMDE4LTIwMjFcbiIpDQpgYGANCmBgYHtyfQ0Kc3RyKGRhdG9zKQ0KJ2RhdG9zJzogICA0IG9icy4gb2YgIDkgdmFyaWFibGVzOg0KICQgYcOxbyAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnQgIDIwMTggMjAxOSAyMDIwIDIwMjENCiAkIHBvYmxhY2lvbl90b3RhbCAgICAgICAgICAgICAgOiBpbnQgIDEyNDczODAwMCAxMjU5MzAwMDAgMTI2MDE0MDI0IDEyNjcwNTEzOA0KICQgbmFjaW1pZW50b3NfcmVnaXN0cmFkb3MgICAgICA6IGludCAgMjE2MjUzNSAyMDkyMjE0IDE2MjkyMTEgMTkxMjE3OA0KICQgZGVmdW5jaW9uZXNfcmVnaXN0cmFkYXMgICAgICA6IGludCAgNzIyNjExIDc0Nzc4NCAxMDg2NzQzIDExMjIyNDkNCiAkIGluY3JlbWVudG9fbmF0dXJhbCAgICAgICAgICAgOiBudW0gIDExLjU0IDEwLjY4IDQuMyA2LjIzDQogJCBjYXNvc19jb3ZpZF9jb25maXJtYWRvcyAgICAgIDogaW50ICAwIDAgMTQzNzE4NSBOQQ0KICQgZGVmdW5jaW9uZXNfY292aWRfY29uZmlybWFkYXM6IGludCAgMCAwIDEyNjUwNyBOQQ0KICQgdGFzYV9uYXRhbGlkYWQgICAgICAgICAgICAgICA6IG51bSAgMTcuMyAxNi42IDEyLjkgMTUuMQ0KICQgdGFzYV9tb3J0YWxpZGFkICAgICAgICAgICAgICA6IG51bSAgNS43OSA1Ljk0IDguNjIgOC44Ng0KYGBgDQpgYGB7cn0NCg0KZ2dwbG90KGRhdG9zLCBhZXMoeCA9IGFuaW8sIHkgPSBpbmNyZW1lbnRvX25hdHVyYWwpKSArDQogIGdlb21fbGluZShsaW5ld2lkdGggPSAxKSArDQogIGdlb21fcG9pbnQoc2l6ZSA9IDMpICsNCiAgZ2VvbV90ZXh0KA0KICAgIGFlcyhsYWJlbCA9IHJvdW5kKGluY3JlbWVudG9fbmF0dXJhbCwgMikpLA0KICAgIHZqdXN0ID0gLTEuNSwNCiAgICBzaXplID0gNA0KICApICsNCiAgc2NhbGVfeV9jb250aW51b3VzKGV4cGFuZCA9IGV4cGFuc2lvbihtdWx0ID0gYygwLjA1LCAwLjIpKSkgKw0KICBsYWJzKA0KICAgIHRpdGxlID0gIkRpbsOhbWljYSBkZWwgaW5jcmVtZW50byBuYXR1cmFsIGRlIGxhIHBvYmxhY2nDs24iLA0KICAgIHggPSAiQW5pbyIsDQogICAgeSA9ICJJbmNyZW1lbnRvIG5hdHVyYWwgKHBvciBjYWRhIDEsMDAwIGhhYml0YW50ZXMpIg0KICApICsNCiAgdGhlbWVfbWluaW1hbCgpDQpgYGANCg0KDQpgYGB7cn0NCiMgUmVzdWx0YWRvDQpjYXQoIkxldGFsaWRhZCBwb3IgQ292aWQtMTkgZnVlIGRlIiwgDQogICAjbWVhbihwb3JjX2xldGFsaWRhZCwgbmEucm0gPSBUUlVFKSwgDQogICAgIiUgZHVyYW50ZSAyMDIwLlxuICIpDQpgYGANCmBgYHtyfQ0KZGF0b3MkbGV0YWxpZGFkX2NvdmlkIDwtIChkYXRvcyRkZWZ1bmNpb25lc19jb3ZpZF9jb25maXJtYWRhcyAvIGRhdG9zJGNhc29zX2NvdmlkX2NvbmZpcm1hZG9zKSAqIDEwMA0KDQpkYXRvc1ssIGMoImFuaW8iLCAibGV0YWxpZGFkX2NvdmlkIildDQpgYGANCmBgYHtyfQ0KZGF0b3NfbGV0YWxpZGFkIDwtIGRhdG9zW2RhdG9zJGNhc29zX2NvdmlkX2NvbmZpcm1hZG9zID4gMCwgYygiYW5pbyIsICJsZXRhbGlkYWRfY292aWQiKV0NCg0KZGF0b3NfbGV0YWxpZGFkDQpgYGANCg0KYGBge3J9DQpsZXRhbGlkYWRfdmFsaWRhIDwtIGxldGFsaWRhZFshaXMubmEobGV0YWxpZGFkKSAmICFpcy5uYW4obGV0YWxpZGFkKV0NCnZhbG9yZXMgPC0gYygNCiAgTGV0YWxpZGFkID0gbGV0YWxpZGFkX3ZhbGlkYSwNCiAgIk5vIGxldGFsaWRhZCIgPSAxIC0gbGV0YWxpZGFkX3ZhbGlkYQ0KKQ0KcGllKA0KICB2YWxvcmVzLA0KICBsYWJlbHMgPSBwYXN0ZTAobmFtZXModmFsb3JlcyksICI6ICIsIHJvdW5kKHZhbG9yZXMgKiAxMDAsIDIpLCAiJSIpLA0KICBtYWluID0gIkxldGFsaWRhZCBwb3IgQ292aWQtMTkgZW4gZWwgYcOxbyAyMDIwIiwNCiAgY29sID0gYygiZmlyZWJyaWNrIiwgImJsdWUiKQ0KICAjbWFyY2EgZXJyb3IgeWEgcXVlIHNvbG8gdW4gYcOxbyBjdWVudGEgY29uIGVsIGRhdG8gZGUgbGV0YWxpZGFkDQopDQpgYGANCg0KYGBge3J9DQpkYXRvcyA8LSBkYXRhLmZyYW1lKA0KICBhw7FvID0gYygyMDE4LCAyMDE5LCAyMDIwLCAyMDIxKSwNCiAgcG9ibGFjaW9uX3RvdGFsID0gYygxMjQ3MzgwMDAsIDEyNTkzMDAwMCwgMTI2MDE0MDI0LCAxMjY3MDUxMzgpLA0KICBuYWNpbWllbnRvc19yZWdpc3RyYWRvcyA9IGMoMjE2MjUzNSwgMjA5MjIxNCwgMTYyOTIxMSwgMTkxMjE3OCksDQogIGRlZnVuY2lvbmVzX3JlZ2lzdHJhZGFzID0gYyg3MjI2MTEsIDc0Nzc4NCwgMTA4Njc0MywgMTEyMjI0OSksDQogIGNhc29zX2NvdmlkX2NvbmZpcm1hZG9zID0gYygwLCAwLCAxNDM3MTg1LCAwKSwNCiAgZGVmdW5jaW9uZXNfY292aWRfY29uZmlybWFkYXMgPSBjKDAsIDAsIDEyNjUwNywgMCkNCikNCg0KZGF0b3MkdGFzYV9uYXRhbGlkYWQgPC0gKGRhdG9zJG5hY2ltaWVudG9zX3JlZ2lzdHJhZG9zIC8NCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRvcyRwb2JsYWNpb25fdG90YWwpICogMTAwMA0KDQpkYXRvcyR0YXNhX21vcnRhbGlkYWQgPC0gKGRhdG9zJGRlZnVuY2lvbmVzX3JlZ2lzdHJhZGFzIC8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0b3MkcG9ibGFjaW9uX3RvdGFsKSAqIDEwMDANCg0KZGF0b3MkaW5jcmVtZW50b19uYXR1cmFsIDwtIGRhdG9zJHRhc2FfbmF0YWxpZGFkIC0gZGF0b3MkdGFzYV9tb3J0YWxpZGFkDQoNCmRhdG9zJHRhc2FfbGV0YWxpZGFkIDwtIChkYXRvcyRkZWZ1bmNpb25lc19jb3ZpZF9jb25maXJtYWRhcyAvIGRhdG9zJGNhc29zX2NvdmlkX2NvbmZpcm1hZG9zKSAqIDEwMA0KDQojIFJlZG9uZGVhciBzb2xvIGNvbHVtbmFzIG7Dum1lcmljYXMNCmRhdG9zX3JlZG9uZGVhZG9zIDwtIGRhdG9zICU+JQ0KICBtdXRhdGVfaWYoaXMubnVtZXJpYywgcm91bmQsIDIpDQoNCiMgQ3JlYXIgbGEgdGFibGEgY29uIGZsZXh0YWJsZQ0KZmxleHRhYmxlKGRhdG9zX3JlZG9uZGVhZG9zKSAlPiUNCiAgYXV0b2ZpdCgpDQpgYGANCg0K