1.- leer datos

librerias

library(readr)
library(dplyr)
library(knitr)
library(kableExtra)
library(ggplot2)

2.- Depuraciòn y selecciòn de la variable

Depuraciòn

variables <- read.csv("C:/Users/CESAR/Downloads/proyecto x/GlobalweatherRepository.csv", header = TRUE)
variables <- na.omit(variables)

Seleccion

Pais <- variables$country

3.- Conteo(Frecuencia)

#Tabla 1
Tabla_Pais <- table(Pais)
ni_pais <- as.vector(Tabla_Pais) 
hi_pais <- round((ni_pais / sum(ni_pais)) * 100, 2)
#Tabla 2 
variables <- variables |> 
  mutate(
    Cuadrante = case_when(
      latitude >= 0 & longitude >= 0 ~ "Norte - Este",
      latitude >= 0 & longitude < 0  ~ "Norte - Oeste",
      latitude < 0  & longitude >= 0 ~ "Sur - Este",
      latitude < 0  & longitude < 0  ~ "Sur - Oeste"
    )
  )

4.- Tabla de frecuencia

Tabla 1

TDF_Pais_Base <- data.frame(
  Pais = names(Tabla_Pais),
  ni = ni_pais,
  hi = hi_pais
)
sumatoria_pais <- data.frame(
  Pais = "TOTAL", 
  ni = sum(ni_pais), 
  hi = 100
)
TDF_Pais_Suma <- rbind(TDF_Pais_Base, sumatoria_pais)
colnames(TDF_Pais_Suma) <- c("Pais", "Frecuencia Absoluta (ni)", "Frecuencia Relativa (hi %)")

kable(TDF_Pais_Suma, align = "c",
      caption = "Tabla N°1: Distribuciòn de frecuencia de paìses del mundo para el anàlisis meteolorolico en sus capitales del periodo 2024 a 2026") |> 
  kable_styling(full_width = TRUE, position = "center",
                bootstrap_options = c("striped", "hover", "condensed", "responsive")) |> 
  row_spec(0, bold = TRUE, color = "white", background = "#2C3E50") |> 
  row_spec(nrow(TDF_Pais_Suma), bold = TRUE, background = "#EAEDED") |> 
  footnote(general = "Fuente: https://www.kaggle.com/datasets/nelgiriyewithana/global-weather-repository\n.",
           general_title = "Grupo 2: ",
           footnote_as_chunk = TRUE,
           title_format = c("italic", "bold"))
Tabla N°1: Distribuciòn de frecuencia de paìses del mundo para el anàlisis meteolorolico en sus capitales del periodo 2024 a 2026
Pais Frecuencia Absoluta (ni) Frecuencia Relativa (hi %)
Afghanistan 729 0.51
Albania 727 0.51
Algeria 726 0.51
Andorra 728 0.51
Angola 728 0.51
Antigua and Barbuda 724 0.51
Argentina 726 0.51
Armenia 728 0.51
Australia 728 0.51
Austria 728 0.51
Azerbaijan 727 0.51
Bahamas 723 0.51
Bahrain 728 0.51
Bangladesh 727 0.51
Barbados 726 0.51
Belarus 727 0.51
Bélgica 1 0.00
Belgium 1364 0.96
Belize 723 0.51
Benin 727 0.51
Bhutan 726 0.51
Bolivia 1445 1.02
Bosnia and Herzegovina 728 0.51
Botswana 728 0.51
Brazil 724 0.51
Brunei Darussalam 726 0.51
Bulgaria 1674 1.18
Burkina Faso 728 0.51
Burundi 729 0.51
Cambodia 727 0.51
Cameroon 727 0.51
Canada 726 0.51
Cape Verde 728 0.51
Central African Republic 727 0.51
Chad 729 0.51
Chile 725 0.51
China 726 0.51
Colombia 1 0.00
Comoros 726 0.51
Congo 726 0.51
Costa Rica 721 0.51
Cote d’Ivoire 267 0.19
Croatia 725 0.51
Cuba 724 0.51
Cyprus 728 0.51
Czech Republic 726 0.51
Democratic Republic of Congo 726 0.51
Denmark 727 0.51
Djibouti 726 0.51
Dominica 724 0.51
Dominican Republic 725 0.51
Ecuador 723 0.51
Egypt 726 0.51
El Salvador 721 0.51
Equatorial Guinea 729 0.51
Eritrea 729 0.51
Estonia 726 0.51
Estonie 1 0.00
Ethiopia 727 0.51
Fiji Islands 729 0.51
Finland 728 0.51
France 727 0.51
Gabon 727 0.51
Gambia 725 0.51
Georgia 725 0.51
Germany 728 0.51
Ghana 729 0.51
Greece 724 0.51
Grenada 723 0.51
Guatemala 721 0.51
Guinea 727 0.51
Guinea-Bissau 727 0.51
Guyana 724 0.51
Haiti 725 0.51
Honduras 723 0.51
Hungary 810 0.57
Iceland 726 0.51
Inde 1 0.00
India 726 0.51
Indonesia 1457 1.03
Iran 1412 1.00
Iraq 729 0.51
Ireland 726 0.51
Israel 727 0.51
Italy 728 0.51
Jamaica 725 0.51
Japan 729 0.51
Jemen 1 0.00
Jordan 729 0.51
Kazakhstan 727 0.51
Kenya 729 0.51
Kiribati 727 0.51
Komoren 1 0.00
Kosovo 1 0.00
Kuwait 727 0.51
Kyrghyzstan 727 0.51
Lao People’s Democratic Republic 1 0.00
Latvia 726 0.51
Lebanon 727 0.51
Lesotho 726 0.51
Letonia 1 0.00
Liberia 727 0.51
Libya 1 0.00
Liechtenstein 727 0.51
Lithuania 727 0.51
Luxembourg 726 0.51
Macedonia 723 0.51
Madagascar 1186 0.84
Malásia 1 0.00
Malawi 728 0.51
Malaysia 727 0.51
Maldives 725 0.51
Mali 727 0.51
Malta 729 0.51
Marrocos 1 0.00
Marshall Islands 728 0.51
Mauritania 727 0.51
Mauritius 727 0.51
Mexico 723 0.51
Mexique 1 0.00
Micronesia 726 0.51
Monaco 725 0.51
Mongolia 727 0.51
Montenegro 726 0.51
Morocco 726 0.51
Mozambique 728 0.51
Myanmar 728 0.51
Namibia 728 0.51
Nepal 727 0.51
Netherlands 728 0.51
New Zealand 727 0.51
Nicaragua 722 0.51
Niger 728 0.51
Nigeria 728 0.51
North Korea 726 0.51
Norway 726 0.51
Oman 728 0.51
Pakistan 726 0.51
Palau 727 0.51
Panama 725 0.51
Papua New Guinea 728 0.51
Paraguay 727 0.51
Peru 723 0.51
Philippines 727 0.51
Poland 729 0.51
Polônia 1 0.00
Portugal 727 0.51
Qatar 726 0.51
Romania 726 0.51
Russia 782 0.55
Rwanda 728 0.51
Saint-Vincent-et-les-Grenadines 1 0.00
Saint Kitts and Nevis 726 0.51
Saint Lucia 727 0.51
Saint Vincent and the Grenadines 725 0.51
Samoa 722 0.51
San Marino 726 0.51
Saudi Arabia 727 0.51
Saudi Arabien 1 0.00
Senegal 729 0.51
Serbia 728 0.51
Seychelles Islands 726 0.51
Sierra Leone 725 0.51
Singapore 728 0.51
Slovakia 728 0.51
Slovenia 728 0.51
Solomon Islands 728 0.51
Somalia 726 0.51
South Africa 728 0.51
South Korea 726 0.51
Spain 728 0.51
Sri Lanka 728 0.51
Sudan 1452 1.02
Südkorea 1 0.00
Suriname 725 0.51
Swaziland 726 0.51
Sweden 727 0.51
Switzerland 776 0.55
Syria 727 0.51
Tajikistan 726 0.51
Tanzania 727 0.51
Thailand 1456 1.03
Timor-Leste 725 0.51
Togo 1 0.00
Tonga 726 0.51
Trinidad and Tobago 725 0.51
Tunisia 726 0.51
Turkey 1452 1.02
Turkmenistan 727 0.51
Turkménistan 1 0.00
Tuvalu 728 0.51
Uganda 728 0.51
Ukraine 729 0.51
United Arab Emirates 728 0.51
United Kingdom 726 0.51
United States of America 720 0.51
Uruguay 727 0.51
USA United States of America 3 0.00
Uzbekistan 729 0.51
Vanuatu 728 0.51
Vatican City 729 0.51
Venezuela 726 0.51
Vietnam 1181 0.83
Yemen 728 0.51
Zambia 728 0.51
Zimbabwe 726 0.51
Гватемала 1 0.00
Польша 1 0.00
Турция 1 0.00
كولومبيا 1 0.00
火鸡 | 1 | 0.00 |
TOTAL 141703 100.00
Grupo 2: Fuente: https://www.kaggle.com/datasets/nelgiriyewithana/global-weather-repository
.

Se observa que esta variable son paises entonces, la clasificamos por cuaduadrantes geogràficos

Tabla 2

Tabla_Cuadrantes <- table(variables$Cuadrante)

ni_cuad <- as.vector(Tabla_Cuadrantes)
hi_cuad <- round((ni_cuad / sum(ni_cuad)) * 100, 2)

TDF_Cuadrantes_Base <- data.frame(
  Cuadrante = names(Tabla_Cuadrantes),
  ni = ni_cuad,
  hi = hi_cuad
)

fila_total_cuad <- data.frame(
  Cuadrante = "TOTAL",
  ni = sum(ni_cuad),
  hi = 100
)

TDF_Cuadrantes_Suma <- rbind(TDF_Cuadrantes_Base, fila_total_cuad)
colnames(TDF_Cuadrantes_Suma) <- c("Cuadrante Geográfico", "Frecuencia Absoluta (ni)", "Frecuencia Relativa (hi %)")

kable(TDF_Cuadrantes_Suma, align = "c", 
      caption = "Tabla N°2: Distribución de frecuencias por cuadrantes geográficos mundiales para el anàlisis meteolorolico en capitales del periodo 2024 a 2026 ") |> 
  kable_styling(full_width = TRUE, position = "center",
                bootstrap_options = c("striped", "hover", "condensed", "responsive")) |> 
  row_spec(0, bold = TRUE, color = "white", background = "#2C3E50") |> 
  row_spec(nrow(TDF_Cuadrantes_Suma), bold = TRUE, background = "#EAEDED") |> 
  footnote(general = "Clasificación basada en coordenadas geográficas.",
           general_title = "Grupo 2: ",
           footnote_as_chunk = TRUE, 
           title_format = c("italic", "bold"))
Tabla N°2: Distribución de frecuencias por cuadrantes geográficos mundiales para el anàlisis meteolorolico en capitales del periodo 2024 a 2026
Cuadrante Geográfico Frecuencia Absoluta (ni) Frecuencia Relativa (hi %)
Norte - Este 79270 55.94
Norte - Oeste 31455 22.20
Sur - Este 23010 16.24
Sur - Oeste 7968 5.62
TOTAL 141703 100.00
Grupo 2: Clasificación basada en coordenadas geográficas.

5.-Gràficos

5.1.- Diagrama de barras por cuadrante geogràfico

ggplot(TDF_Cuadrantes_Base, aes(x = reorder(Cuadrante, -ni), y = ni)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black", width = 0.6) +
  geom_text(aes(label = format(ni, big.mark = ",")), vjust = -0.5, size = 4, fontface = "bold") +
  scale_y_continuous(
    labels = scales::comma, 
    limits = c(0, 80000), 
    breaks = seq(0, 80000, by = 20000)
  ) +
  labs(
    title = "Gràfica N.1: Cantidad de Registros (ni) por Cuadrante Geográfico",
    subtitle = "Conteo directo de frecuencias absolutas observadas en el la tabla 2",
    x = "Cuadrante Geográfico",
    y = "Cantidad de Registros (ni)"
  ) +
  theme_bw(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
    plot.subtitle = element_text(size = 11, hjust = 0.5, face = "italic"),
    panel.grid.major.x = element_blank(),
    panel.grid.minor = element_blank()    
  )

5.2.- Diagrama de barras porcentual por cuadrante geogràfico

ggplot(TDF_Cuadrantes_Base, aes(x = reorder(Cuadrante, -hi), y = hi)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black", width = 0.6) +
  geom_text(aes(label = paste0(hi, "%")), vjust = -0.5, size = 4, fontface = "bold") +
  scale_y_continuous(
    limits = c(0, 60), 
    breaks = seq(0, 60, by = 20)
  ) +
  labs(
    title = "Gràfica N.2: Distribución Porcentual (hi %) por Cuadrante Geográfico",
    subtitle = "Porcentaje relativo observado para cada región sobre el 100% del total",
    x = "Cuadrante Geográfico",
    y = "Porcentaje del Total (hi %)"
  ) +
  theme_bw(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
    plot.subtitle = element_text(size = 11, hjust = 0.5, face = "italic"),
    panel.grid.major.x = element_blank(),
    panel.grid.minor = element_blank()    
  )

5.3.- Diagrama de barras general

ggplot(TDF_Cuadrantes_Base, aes(x = reorder(Cuadrante, -ni), y = ni)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black", width = 0.6) +
  geom_text(aes(label = format(ni, big.mark = ",")), vjust = -0.5, size = 4, fontface = "bold") +
  scale_y_continuous(
    labels = scales::comma, 
    limits = c(0, 140000), 
    breaks = seq(0, 140000, by = 20000)
  ) +
  labs(
    title = "Gràfica N.3: Cantidad de Registros (ni) por Cuadrante Geográfico",
    subtitle = "Conteo directo de frecuencias absolutas observadas en el la tabla 2",
    x = "Cuadrante Geográfico",
    y = "Cantidad de Registros (ni)"
  ) +
  theme_bw(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
    plot.subtitle = element_text(size = 11, hjust = 0.5, face = "italic"),
    panel.grid.major.x = element_blank(),
    panel.grid.minor = element_blank()    
  )

5.4.- Diagrama de barras porcentual general

ggplot(TDF_Cuadrantes_Base, aes(x = reorder(Cuadrante, -hi), y = hi)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black", width = 0.6) +
  geom_text(aes(label = paste0(hi, "%")), vjust = -0.5, size = 4, fontface = "bold") +
  scale_y_continuous(
    limits = c(0, 100), 
    breaks = seq(0, 100, by = 20)
  ) +
  labs(
    title = "Gràfica N.4: Distribución Porcentual (hi %) por Cuadrante Geográfico",
    subtitle = "Porcentaje relativo observado para cada región sobre el 100% del total",
    x = "Cuadrante Geográfico",
    y = "Porcentaje del Total (hi %)"
  ) +
  theme_bw(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
    plot.subtitle = element_text(size = 11, hjust = 0.5, face = "italic"),
    panel.grid.major.x = element_blank(),
    panel.grid.minor = element_blank()    
  )

5.5.- Diagrama circular

TDF_Cuadrantes_Grafico <- TDF_Cuadrantes_Base |> 
  arrange(desc(Cuadrante)) |> 
  mutate(posicion_texto = cumsum(hi) - 0.5 * hi)

ggplot(TDF_Cuadrantes_Grafico, aes(x = "", y = hi, fill = Cuadrante)) +
  geom_bar(stat = "identity", width = 1, color = "black") +
  coord_polar("y", start = 0) +
  geom_text(aes(y = posicion_texto, label = paste0(hi, "%")), size = 4.5, fontface = "bold") +
  scale_fill_viridis_d(option = "viridis") +
  labs(
    title = "                         Gràfica N.5: Distribución Porcentual (hi %) por Cuadrante Geográfico",
    subtitle = "Composición proporcional de los sectores sobre el 100% del total",
    fill = "Cuadrante Geográfico"
  ) +
  theme_void(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
    plot.subtitle = element_text(size = 11, hjust = 0.5, face = "italic"),
    legend.position = "right",
    legend.title = element_text(face = "bold")
  )

6.- Calculos de indicadores de frecuencia

7.- Conclusiones