REPTE 2. Compte amb les dades agregades!

Autor

Rosario Perez Damian

Última modificació

3 de novembre de 2025

Activitat 1

Si inclous al següent chunk eval = T i t’assegures que l’arxiu gtd_beta.png està guardat al teu directori de treball, veuràs el marc de dades del Global Tariff Database (Beta).

knitr::include_graphics("gtd_beta.png")

Observa les dades de la imatge i consulta, si així ho consideres, la pàgina web per respondre les següents preguntes:

  • Quantes observacions i variables té?

El Global Tariff Database (Beta) conté 6.766 observacions i 11 variables. Cada fila correspon a una combinació de país exportador (iso1), país importador (iso2) i any, amb diverses mesures de tarifes (aranzel simple, ponderat, MFN, etc.).

  • Quina és la unitat d’observació?

La unitat d’observació és la relació comercial entre dos països (país d’origen i país soci) en un any determinat, amb les seves tarifes associades.

  • Quin tipus de variables té?

Segons la classificació dels apunts del mòdul, dins del conjunt de dades del Global Tariff Database (Beta) hi ha variables nominals (els països), una variable d’interval (l’any) i diverses variables de ràtio (les tarifes aranzelàries), tal com estableix la tipologia recollida als apunts del mòdul.

  • Quin és el nivell d’anàlisi?

Segons la classificació de nivells d’anàlisi proposada per Kenneth Waltz (1959) i recollida als apunts del mòdul, el conjunt de dades del Global Tariff Database (Beta) s’emmarca en el segon nivell d’anàlisi: l’Estat. Cada observació del dataset fa referència a un país i a les seves polítiques comercials —concretament, a les tarifes aranzelàries que aplica a les importacions procedents d’altres països en un any determinat. Així, la informació reflecteix decisions i característiques dels estats, no pas d’individus ni del sistema internacional en conjunt.

  • Proposa una pregunta que es podria contestar utilitzant la informació d’aquest marc de dades (combinada amb altres dades si cal).

Una possible pregunta que es podria respondre amb les dades del Global Tariff Database (Beta) és si els països amb un nivell econòmic més alt tendeixen a aplicar tarifes comercials més baixes. Aquesta anàlisi permetria explorar la relació entre el desenvolupament econòmic i el grau d’obertura comercial, combinant les dades d’aranzels amb altres fonts com el PIB per càpita.

  • Posa un exemple de problema de fal·làcia ecològica amb aquestes dades.

Un exemple de fal·làcia ecològica amb aquestes dades seria suposar que, perquè els països amb tarifes mitjanes més altes tenen un PIB per càpita més baix, les persones d’aquests països són menys riques o menys obertes al comerç internacional. Aquesta conclusió seria errònia perquè les dades estan recollides al nivell estatal, i no permeten inferir característiques ni comportaments dels individus que viuen en aquests països.

Activitat 2

En aquesta activitat utilitzarem el marc de dades de la base de dades WhoGov. A l’anterior enllaç cal descarregar el fitxer “WhoGov_within_V3.1.rds” (és important guardar-lo a la mateixa carpeta on teniu el fitxer Quarto amb què esteu treballant), després l’importarem amb la funció readRDS() i el desarem com un objecte amb el nom de whogov. És important per fer aquesta activitat que disposis de connexió a internet ja que les dades s’importen des d’una pàgina web.

Les preguntes d’aquesta activitat s’han de contestar utilitzant el codi de R base (no dplyr).

Recorda que tots els chunks estan en eval = F, per activar-los has de canviar a eval = T

Recorda desar el fitxer .rds a la mateixa carpeta que el fitxer .qmd.

1. Fes una exploració general de les dades amb les funcions que ja coneixes, identificant el nombre d’observacions, variables, unitat d’observació, etc.

# Importar WhoGov amb base R
# (El fitxer .rds ha d'estar a la mateixa carpeta que aquest .qmd)
whogov <- readRDS("WhoGov_within_V3.1.rds")
# Comprovar que s'ha carregat
dim(whogov)     # files, columnes
[1] 261152     31
head(whogov)    # primeres 6 files
# A tibble: 6 × 31
  year  country_isocode country_name id    position name  title gender birthyear
  <chr> <chr>           <chr>        <chr> <chr>    <chr> <chr> <chr>      <dbl>
1 1966  AFG             Afghanistan  1     King     Moha… <NA>  Male        1914
2 1966  AFG             Afghanistan  2     Prime M… Maiw… <NA>  Male        1921
3 1966  AFG             Afghanistan  3     1st Dep… Nur … <NA>  Male        1921
4 1966  AFG             Afghanistan  4     2nd Dep… Shal… <NA>  Male        1916
5 1966  AFG             Afghanistan  5     Min. Of… Moha… <NA>  Male          NA
6 1966  AFG             Afghanistan  6     Min. Of… Ali … Dr.   Male          NA
# ℹ 22 more variables: deadyear <chr>, party <chr>, party_english <chr>,
#   party_otherlanguage <chr>, whogov_partyid <chr>, partyfacts_id <dbl>,
#   core <chr>, minister <chr>, leader <chr>, classification <chr>,
#   portfolio_1 <chr>, prestige_1 <chr>, portfolio_2 <chr>, prestige_2 <chr>,
#   portfolio_3 <chr>, prestige_3 <chr>, portfolio_4 <chr>, prestige_4 <chr>,
#   m_finance <chr>, m_defense <chr>, m_agriculture <chr>,
#   m_foreignaffairs <chr>

-Quantes observacions i variables té?

El conjunt de dades WhoGov (versió 3.1) conté 261.152 observacions i 31 variables. Cada observació correspon a un membre del govern d’un país en un any determinat, i les variables recullen informació sobre el seu càrrec, partit polític, posició dins del govern i altres característiques institucionals.

  • Quina és la unitat d’observació?

La unitat d’observació del conjunt de dades WhoGov és el membre individual del govern. Cada fila representa una persona que ocupa un càrrec en el govern d’un país concret durant un any determinat, amb informació sobre la seva posició, partit polític i cartera ministerial.

Això significa que les dades no descriuen països o governs com a unitats globals, sinó els individus que en formen part, de manera que permeten analitzar la composició i característiques dels gabinets al llarg del temps.

  • Quin tipus de variables té?

El conjunt de dades WhoGov conté principalment variables nominals, ordinals i d’interval, segons la classificació dels apunts del mòdul.

Hi trobem variables nominals com country_isocode, country_name, name, party o position, que identifiquen categories sense ordre numèric. També hi ha variables ordinals com prestige_1, prestige_2, etc., que reflecteixen un rang o jerarquia dins del govern. Finalment, la variable year és una variable d’interval, ja que representa una escala numèrica amb distàncies iguals entre valors, però sense un zero absolut.

No hi ha variables de ràtio, ja que cap d’elles mesura quantitats amb un zero significatiu (com serien, per exemple, edats o ingressos).

  • Quin és el nivell d’anàlisi?

Segons la classificació de nivells d’anàlisi proposada per Kenneth Waltz (1959), el conjunt de dades WhoGov s’emmarca en el nivell d’anàlisi individual.

Cada observació correspon a una persona concreta que ocupa un càrrec en un govern nacional en un any determinat. Això vol dir que les dades se centren en les característiques i decisions dels individus (líders, ministres o altres membres del govern), i no en les accions globals de l’Estat ni en les dinàmiques del sistema internacional.

Per tant, el seu nivell d’anàlisi principal és l’individu, ja que permet estudiar patrons de composició, gènere, afiliació partidista o rotació dels membres del govern a escala personal.

  • Proposa una pregunta que es podria contestar utilitzant la informació d’aquest marc de dades (combinada amb altres dades si cal).

Una possible pregunta de recerca que es podria respondre amb el conjunt de dades WhoGov és: Hi ha diferències de gènere en l’accés a càrrecs ministerials segons el règim polític dels països?

Aquesta pregunta combina la informació sobre els membres del govern (individus) i la seva cartera o posició amb altres fonts, com ara indicadors de nivell de democràcia o autoritarisme (per exemple, el Polity Index o Freedom House).

Permetria explorar si els règims més democràtics afavoreixen una presència més gran de dones en llocs de responsabilitat política.

  • Posa un exemple de problema de fal·làcia ecològica amb aquestes dades.

Un exemple de fal·làcia ecològica amb les dades de WhoGov seria afirmar que: Als països amb un nivell més alt de democràcia, tots els ministres són més transparents i tenen més experiència política.

Aquesta afirmació seria incorrecta perquè les dades de WhoGov proporcionen informació individual sobre els membres dels governs (persones), però no permeten inferir directament comportaments o atributs personals a partir de mitjanes o característiques agregades del país.

Si, per exemple, analitzem el nivell de democràcia d’un país i observem que el seu govern té una alta proporció de ministres amb formació universitària, no podem concloure que tots els ministres dels països democràtics siguin més qualificats o transparents. El problema és que s’està inferint una característica individual a partir d’un nivell agregat, confonent el nivell d’anàlisi (individu) amb el nivell d’observació (país).

2. Amb unique(), examina quants països diferents hi ha.

length(unique(whogov$country_name))
[1] 178

En aplicar la funció unique() a la variable country_name i comptar els valors únics amb length(), observem que hi ha un total de 178 països diferents.

3. Escriu el codi que et permeti observar quina observació/observacions hi ha per ministres de felicitat i benestar (“Min. Of Happiness & Wellbeing”).

# Mostrar les observacions que corresponen al Ministeri de Felicitat i Benestar
whogov[whogov$position == "Min. Of Happiness & Wellbeing", ]
# A tibble: 4 × 31
  year  country_isocode country_name id    position name  title gender birthyear
  <chr> <chr>           <chr>        <chr> <chr>    <chr> <chr> <chr>      <dbl>
1 2018  ARE             United Arab… 1330  Min. Of… Ohou… <NA>  Female        NA
2 2019  ARE             United Arab… 1372  Min. Of… Ohou… <NA>  Female        NA
3 2020  ARE             United Arab… 1415  Min. Of… Ohou… <NA>  Female        NA
4 2021  ARE             United Arab… 1458  Min. Of… Ohou… <NA>  Female        NA
# ℹ 22 more variables: deadyear <chr>, party <chr>, party_english <chr>,
#   party_otherlanguage <chr>, whogov_partyid <chr>, partyfacts_id <dbl>,
#   core <chr>, minister <chr>, leader <chr>, classification <chr>,
#   portfolio_1 <chr>, prestige_1 <chr>, portfolio_2 <chr>, prestige_2 <chr>,
#   portfolio_3 <chr>, prestige_3 <chr>, portfolio_4 <chr>, prestige_4 <chr>,
#   m_finance <chr>, m_defense <chr>, m_agriculture <chr>,
#   m_foreignaffairs <chr>

En aplicar el filtre, s’observen 4 observacions corresponents al càrrec de Ministre de Felicitat i Benestar (Min. Of Happiness & Wellbeing). Totes pertanyen als Emirats Àrabs Units (ARE) i cobreixen el període 2018–2021, la qual cosa reflecteix que aquest ministeri és una posició singular dins d’un únic país.

4. Canvia “Male” per “Man” i “Female” per “Woman” a la variable gender.

# Canviar valors de la variable gender
whogov$gender <- ifelse(whogov$gender == "Male", "Man",
                        ifelse(whogov$gender == "Female", "Woman", whogov$gender))

# Comprovar els valors únics després del canvi
unique(whogov$gender)
[1] "Man"     "Woman"   NA        "Unknown" "Other"  

Després de recodificar la variable gender, els valors s’han actualitzat correctament: “Male” ha passat a “Man” i “Female” a “Woman”. Els valors “Unknown”, “Other” i les observacions sense dada (NA) s’han mantingut sense modificacions.

5. La variable birthyear indica l’any en què va néixer la persona. Volem crear una nova variable que es digui edatactual i que calculi l’edat que té (o tindria) aquesta persona el 2025. Així, una persona nascuda el 1940 tindria 85 anys el 2025, ja que 2025-1940=85.

# Crear una nova variable 'edatactual' amb l'edat al 2025
whogov$edatactual <- 2025 - whogov$birthyear

# Comprovar que la nova variable s'ha creat correctament
head(whogov[, c("birthyear", "edatactual")])
# A tibble: 6 × 2
  birthyear edatactual
      <dbl>      <dbl>
1      1914        111
2      1921        104
3      1921        104
4      1916        109
5        NA         NA
6        NA         NA

La nova variable edatactual s’ha creat correctament i mostra l’edat que tindrien les persones l’any 2025.

La funció head() visualitza només les primeres sis observacions per verificar-ne el resultat, però la variable s’ha generat per a tot el conjunt de dades.

6. Redueix les dades en un objecte nou (whogov_es), de manera que conservis només les observacions d’Espanya.

# Crear un nou objecte amb només les observacions d'Espanya
whogov_es <- whogov[whogov$country_name == "Spain", ]

# Comprovar el nombre d'observacions
dim(whogov_es)
[1] 1257   32
# Visualitzar les primeres files
head(whogov_es[, c("year", "country_name", "name", "position")])
# A tibble: 6 × 4
  year  country_name name                       position                        
  <chr> <chr>        <chr>                      <chr>                           
1 1966  Spain        Francisco Franco Bahamonde President                       
2 1966  Spain        Agustin Munoz Grandes      Vice President                  
3 1966  Spain        Luis Carrero Blanco        Min. -Under Sec. Of The Preside…
4 1966  Spain        Adolfo Diaz Ambrona Moreno Min. Of Agriculture             
5 1966  Spain        Jose Lacalle Larraga       Min. Of Air                     
6 1966  Spain        Camilo Menendez Tolosa     Min. Of Army                    

S’ha creat l’objecte whogov_es, que conté 1.257 observacions i 32 variables corresponents exclusivament a Espanya.

Aquest subconjunt permet analitzar l’evolució dels governs espanyols des del període franquista fins a l’actualitat, segons les dades disponibles a WhoGov v3.1.

7. Finalment, crea una nova variable decade a partir dels valors de la variable year, de manera que observis els seus valors per dècades. És a dir, en lloc de 1966 s’hauria de veure el valor “1960s”, en lloc de 1971 el valor “1970s”, etc.

# Crear una nova variable 'decade' a partir de 'year'
# Primer assegurem-nos que year és numèrica
whogov_es$year <- as.numeric(whogov_es$year)

# Calcular la dècada: 1966 -> 1960s, 1971 -> 1970s, etc.
whogov_es$decade <- paste0(floor(whogov_es$year / 10) * 10, "s")

# Comprovar el resultat
head(whogov_es[, c("year", "decade")])
# A tibble: 6 × 2
   year decade
  <dbl> <chr> 
1  1966 1960s 
2  1966 1960s 
3  1966 1960s 
4  1966 1960s 
5  1966 1960s 
6  1966 1960s 
# Comptar quantes observacions hi ha per dècada
table(whogov_es$decade)

1960s 1970s 1980s 1990s 2000s 2010s 2020s 
   78   215   199   202   230   208   125 

En crear la nova variable decade a partir de year, s’ha transformat cada any en la seva dècada corresponent. Per exemple, l’any 1966 ara apareix com a “1960s”, i així successivament.

El resultat mostra que la variable s’ha generat correctament: les primeres observacions corresponen als anys 1960, que s’identifiquen amb el valor “1960s”.

En comptar el nombre d’observacions per dècada (table(whogov_es$decade)), s’obté la distribució per dècada.

Activitat 3

En aquesta secció utilitzarem el sistema pipe (%>% o |>) i les funcions del paquet dplyr (filter, select, mutate, arrange). Els farem servir per analitzar la base de dades de passatgers del Titanic. Aquesta base de dades l’obtenim a partir del paquet titanic i guardem la base de dades completa en un objecte que anomenem titanic_full. Podeu trobar més informació sobre aquest paquet i les dades aquí.

# install.packages("titanic") ## Instal·la el paquet titanic si no el tens ja instal·lat (fes-ho només un cop i no incloguis aquest codi al document)
library(titanic)
titanic_full <- titanic_train

1. En primer lloc, reduirem les dades, de manera que només conservarem les dades que ens interessen. Primer hauràs de visualitzar les dades per fer-te una idea del seu contingut (prova-ho amb glimpse()). A continuació, crea un nou objecte titanic on conservarem les columnes següents: l’identificador del passatger, el seu nom, si va sobreviure, la classe del bitllet, el sexe, l’edat, on va embarcar i quant li va costar el bitllet. Aquest serà el marc de dades que farem servir a la resta de l’activitat.

library(dplyr)

# Visualitzar les dades completes
titanic_full %>% glimpse()
Rows: 891
Columns: 12
$ PassengerId <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,…
$ Survived    <int> 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1…
$ Pclass      <int> 3, 1, 3, 1, 3, 3, 1, 3, 3, 2, 3, 1, 3, 3, 3, 2, 3, 2, 3, 3…
$ Name        <chr> "Braund, Mr. Owen Harris", "Cumings, Mrs. John Bradley (Fl…
$ Sex         <chr> "male", "female", "female", "female", "male", "male", "mal…
$ Age         <dbl> 22, 38, 26, 35, 35, NA, 54, 2, 27, 14, 4, 58, 20, 39, 14, …
$ SibSp       <int> 1, 1, 0, 1, 0, 0, 0, 3, 0, 1, 1, 0, 0, 1, 0, 0, 4, 0, 1, 0…
$ Parch       <int> 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 0, 0, 5, 0, 0, 1, 0, 0, 0…
$ Ticket      <chr> "A/5 21171", "PC 17599", "STON/O2. 3101282", "113803", "37…
$ Fare        <dbl> 7.2500, 71.2833, 7.9250, 53.1000, 8.0500, 8.4583, 51.8625,…
$ Cabin       <chr> "", "C85", "", "C123", "", "", "E46", "", "", "", "G6", "C…
$ Embarked    <chr> "S", "C", "S", "S", "S", "Q", "S", "S", "S", "C", "S", "S"…
# Crear objecte Titanic i reduir amb les dades necessàries
titanic <- titanic_full %>%
  select(PassengerId, Name, Survived, Pclass, Sex, Age, Embarked, Fare)

# Comprovació ràpida
titanic %>% head()
  PassengerId                                                Name Survived
1           1                             Braund, Mr. Owen Harris        0
2           2 Cumings, Mrs. John Bradley (Florence Briggs Thayer)        1
3           3                              Heikkinen, Miss. Laina        1
4           4        Futrelle, Mrs. Jacques Heath (Lily May Peel)        1
5           5                            Allen, Mr. William Henry        0
6           6                                    Moran, Mr. James        0
  Pclass    Sex Age Embarked    Fare
1      3   male  22        S  7.2500
2      1 female  38        C 71.2833
3      3 female  26        S  7.9250
4      1 female  35        S 53.1000
5      3   male  35        S  8.0500
6      3   male  NA        Q  8.4583

2. Filtra les dades del Titanic perquè es mostrin només les persones que van embarcar a Queenstown (Irlanda) (“Q”).

# Filtrar les persones que van embarcar a Queenstown ("Q")
titanic_Q <- titanic %>%
  filter(Embarked == "Q")

# Comprovar les primeres files (en total hi han 77)
titanic_Q %>% head()
  PassengerId                          Name Survived Pclass    Sex Age Embarked
1           6              Moran, Mr. James        0      3   male  NA        Q
2          17          Rice, Master. Eugene        0      3   male   2        Q
3          23   McGowan, Miss. Anna "Annie"        1      3 female  15        Q
4          29 O'Dwyer, Miss. Ellen "Nellie"        1      3 female  NA        Q
5          33      Glynn, Miss. Mary Agatha        1      3 female  NA        Q
6          45 Devaney, Miss. Margaret Delia        1      3 female  19        Q
     Fare
1  8.4583
2 29.1250
3  8.0292
4  7.8792
5  7.7500
6  7.8792

Després de filtrar el conjunt de dades, l’objecte titanic_Q conté únicament les observacions de les persones que van embarcar al port de Queenstown (Q), a Irlanda.

3. Filtra les dades perquè es mostrin només els infants menors de 10 anys.

# Filtrar els passatgers menors de 10 anys i mostrar-ne les primeres files
titanic_kids <- titanic %>%
  filter(Age < 10)

# Mostrar-ne només les primeres observacions (en total 62)
titanic_kids %>% head()
  PassengerId                                     Name Survived Pclass    Sex
1           8           Palsson, Master. Gosta Leonard        0      3   male
2          11          Sandstrom, Miss. Marguerite Rut        1      3 female
3          17                     Rice, Master. Eugene        0      3   male
4          25            Palsson, Miss. Torborg Danira        0      3 female
5          44 Laroche, Miss. Simonne Marie Anne Andree        1      2 female
6          51               Panula, Master. Juha Niilo        0      3   male
  Age Embarked    Fare
1   2        S 21.0750
2   4        S 16.7000
3   2        Q 29.1250
4   8        S 21.0750
5   3        C 41.5792
6   7        S 39.6875

S’han filtrat les observacions per mostrar únicament els passatgers menors de 10 anys. Amb head() s’han visualitzat només les primeres files per comprovar que el filtratge s’ha aplicat correctament, ja que hi han 62 files.

4. Copia el codi anterior i afegeix un nou pipe, on posis el valor actualitzat del cost del bitllet, tenint en compte que 1 lliura el 1912 equival a aproximadament 145 lliures actuals.

# Filtrar infants menors de 10 anys i afegir el cost actualitzat del bitllet
titanic_kids <- titanic %>%
  filter(Age < 10) %>%
  mutate(Fare_actual = Fare * 145)

# Mostra les primeres files
titanic_kids %>% 
  select(Name, Age, Fare, Fare_actual) %>%
  head()
                                      Name Age    Fare Fare_actual
1           Palsson, Master. Gosta Leonard   2 21.0750    3055.875
2          Sandstrom, Miss. Marguerite Rut   4 16.7000    2421.500
3                     Rice, Master. Eugene   2 29.1250    4223.125
4            Palsson, Miss. Torborg Danira   8 21.0750    3055.875
5 Laroche, Miss. Simonne Marie Anne Andree   3 41.5792    6028.984
6               Panula, Master. Juha Niilo   7 39.6875    5754.688

S’ha creat una nova variable Fare_actual que reflecteix el cost del bitllet actualitzat a lliures del 2025, utilitzant la conversió indicada (1 lliura de 1912 ≈ 145 lliures actuals). Això permet comparar el valor econòmic dels bitllets del Titanic en termes moderns.

5. Copia el codi anterior i afegeix un nou pipe, on ordenis les dades pel cost del bitllet.

# Filtrar infants menors de 10 anys i calcular el cost actualitzat
titanic_kids <- titanic %>%
  filter(Age < 10) %>%
  mutate(Fare_actual = Fare * 145)

# Ordenar en ordre ASCENDENT (de més barat a més car)
titanic_kids_asc <- titanic_kids %>%
  arrange(Fare)

# Mostrar les primeres files
titanic_kids_asc %>%
  select(Name, Age, Fare, Fare_actual) %>%
  head()
                             Name  Age    Fare Fare_actual
1 Thomas, Master. Assad Alexander 0.42  8.5167    1234.921
2      Strom, Miss. Telma Matilda 2.00 10.4625    1517.062
3    Johnson, Miss. Eleanor Ileen 1.00 11.1333    1614.329
4 Johnson, Master. Harold Theodor 4.00 11.1333    1614.329
5        Hirvonen, Miss. Hildur E 2.00 12.2875    1781.688
6             Moor, Master. Meier 6.00 12.4750    1808.875
# Ordenar en ordre DESCENDENT (de més car a més barat)
titanic_kids_desc <- titanic_kids %>%
  arrange(desc(Fare))

# Mostrar les primeres files
titanic_kids_desc %>%
  select(Name, Age, Fare, Fare_actual) %>%
  head()
                                      Name  Age     Fare Fare_actual
1             Allison, Miss. Helen Loraine 2.00 151.5500   21974.750
2           Allison, Master. Hudson Trevor 0.92 151.5500   21974.750
3                Dodge, Master. Washington 4.00  81.8583   11869.453
4          Goodwin, Master. Sidney Leonard 1.00  46.9000    6800.500
5           Goodwin, Master. Harold Victor 9.00  46.9000    6800.500
6 Laroche, Miss. Simonne Marie Anne Andree 3.00  41.5792    6028.984

S’han ordenat les dades dels infants menors de 10 anys segons el cost del bitllet tant en ordre ascendent com descendent. Això permet comparar els passatgers amb els bitllets més econòmics i aquells amb els preus més elevats, tant en el valor original com en el valor actualitzat.

6. D’entre les dones que van sobreviure, com es deien i en quina classe viatjaven aquelles que tenien més edat? Respon a la pregunta utilitzant, en aquest ordre, filter(), select() i arrange(). El marc de dades resultant hauria de mostrar clarament la resposta.

# Filtrar les dones que van sobreviure, seleccionar les variables d'interès i ordenar per edat
titanic_elder_women <- titanic %>%
  filter(Sex == "female", Survived == 1) %>%
  select(Name, Pclass, Age, Survived) %>%
  arrange(desc(Age))

# Mostrar les primeres files (les dones més grans que van sobreviure)
titanic_elder_women %>% head()
                                              Name Pclass Age Survived
1                Andrews, Miss. Kornelia Theodosia      1  63        1
2                           Turkula, Mrs. (Hedwig)      3  63        1
3        Stone, Mrs. George Nelson (Martha Evelyn)      1  62        1
4 Warren, Mrs. Frank Manley (Anna Sophia Atkinson)      1  60        1
5                         Bonnell, Miss. Elizabeth      1  58        1
6                             Lurette, Miss. Elise      1  58        1

El conjunt resultant mostra les dones que van sobreviure al naufragi, ordenades segons la seva edat.

D’entre les dones que van sobreviure al naufragi del Titanic, les que tenien més edat eren Kornelia Theodosia Andrews i Mrs. (Hedwig) Turkula, ambdues de 63 anys. Totes dues viatjaven a la primera i tercera classe, respectivament.

Altres dones de més edat que també van sobreviure foren Martha Evelyn Stone (62 anys), Anna Sophia Atkinson (60 anys), Elizabeth Bonnell (58 anys) i Elise Lurette (58 anys).

Aquest resultat mostra clarament que la major part de les dones d’edat avançada que van sobreviure viatjaven en primera classe, fet que reflecteix com la posició social i la classe del bitllet podien influir en les probabilitats de supervivència.

7. [BONUS] Planteja alguna altra pregunta d’interès que puguis resoldre amb aquestes dades i respon-la utilitzant les funcions de dplyr i el sistema de pipes.

La pregunta plantejada seria: Quina és la taxa de supervivència per combinació de classe i sexe?.

Aquesta pregunta permet mostar els patrons de rescat.

library(dplyr)

titanic %>%
  group_by(Sex, Pclass) %>%
  summarise(
    n = n(),
    survival_rate = mean(Survived, na.rm = TRUE)
  ) %>%
  mutate(survival_pct = round(100 * survival_rate, 1)) %>%
  arrange(desc(survival_rate))
# A tibble: 6 × 5
# Groups:   Sex [2]
  Sex    Pclass     n survival_rate survival_pct
  <chr>   <int> <int>         <dbl>        <dbl>
1 female      1    94         0.968         96.8
2 female      2    76         0.921         92.1
3 female      3   144         0.5           50  
4 male        1   122         0.369         36.9
5 male        2   108         0.157         15.7
6 male        3   347         0.135         13.5

D’acord amb les dades del Titanic, les taxes de supervivència varien fortament segons el sexe i la classe del bitllet.

Les dones presenten una taxa de supervivència molt més alta que els homes en totes les classes:

A 1a classe, el 96,8% de les dones va sobreviure,

a 2a classe, el 92,1%,

i a 3a classe, el 50%.

En canvi, els homes mostren una taxa de supervivència molt inferior:

només el 36,9% a 1a classe,

el 15,7% a 2a,

i el 13,5% a 3a.

Aquest patró confirma el principi de “les dones i els nens primer” aplicat durant l’evacuació, així com la forta influència de la classe social en les probabilitats de supervivència.