1 - Reproduza todos os códigos que estão na apresentação e publique o resultado como um documento Rpubs.
df_titanic <- read.csv('http://www.populacoes.info/df/titanic.csv')
head(df_titanic)
## PassengerId Survived Pclass
## 1 1 0 3
## 2 2 1 1
## 3 3 1 3
## 4 4 1 1
## 5 5 0 3
## 6 6 0 3
## Name Sex Age SibSp Parch
## 1 Braund, Mr. Owen Harris male 22 1 0
## 2 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female 38 1 0
## 3 Heikkinen, Miss. Laina female 26 0 0
## 4 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1 0
## 5 Allen, Mr. William Henry male 35 0 0
## 6 Moran, Mr. James male NA 0 0
## Ticket Fare Cabin Embarked
## 1 A/5 21171 7.2500 S
## 2 PC 17599 71.2833 C85 C
## 3 STON/O2. 3101282 7.9250 S
## 4 113803 53.1000 C123 S
## 5 373450 8.0500 S
## 6 330877 8.4583 Q
# Ou
head(df_titanic[c("Sex","Pclass","Survived")])
## Sex Pclass Survived
## 1 male 3 0
## 2 female 1 1
## 3 female 3 1
## 4 female 1 1
## 5 male 3 0
## 6 male 3 0
Selecionar casos apenas de sobriviventes por sexo e classe
head(df_titanic[df_titanic$Survived == 1,
c("Sex","Pclass")])
## Sex Pclass
## 2 female 1
## 3 female 3
## 4 female 1
## 9 female 3
## 10 female 2
## 11 female 3
Usando a função subset()
head(
subset(df_titanic,
subset = Survived == 1,
select = c(Sex, Pclass)))
## Sex Pclass
## 2 female 1
## 3 female 3
## 4 female 1
## 9 female 3
## 10 female 2
## 11 female 3
Selecionar e recodificar e casos com o pacote {dplyr} parte do {tidyverse}:
df_titanic %>%
select(Sex, Pclass, Survived, Age) %>%
mutate(Sex = as.factor(recode(Sex,
female = 'feminino',
male = 'masculino'))) %>%
mutate(Pclass = as.factor(recode(Pclass,
`1` = '1ª classe',
`2` = '2ª classe',
`3` = '3ª classe'))) %>%
mutate(Survived = as.factor(recode(Survived,
`0` = 'faleceram',
`1` = 'sobreviveram'))) %>%
rename(Sexo = Sex) %>%
rename(Classe = Pclass) %>%
rename(Idade = Age) %>%
rename(Sobreviventes = Survived) -> tb_titanic_sel1
head(tb_titanic_sel1)
## Sexo Classe Sobreviventes Idade
## 1 masculino 3ª classe faleceram 22
## 2 feminino 1ª classe sobreviveram 38
## 3 feminino 3ª classe sobreviveram 26
## 4 feminino 1ª classe sobreviveram 35
## 5 masculino 3ª classe faleceram 35
## 6 masculino 3ª classe faleceram NA
Qual a média de idade dos sobreviventes e dos falecidos no naufrágio?
tb_titanic_sel1 %>%
group_by(Sobreviventes) %>%
summarise(média = mean(Idade), total = n())
## # A tibble: 2 x 3
## Sobreviventes média total
## <fct> <dbl> <int>
## 1 faleceram NA 549
## 2 sobreviveram NA 342
Eliminando os casos omissos
tb_titanic_sel1 %>%
group_by(Sobreviventes) %>%
na.omit() %>%
summarise(média = mean(Idade), total = n())
## # A tibble: 2 x 3
## Sobreviventes média total
## <fct> <dbl> <int>
## 1 faleceram 30.6 424
## 2 sobreviveram 28.3 290
Qual a média dos passageiros por sexo?
tb_titanic_sel1 %>%
group_by(Sexo) %>%
na.omit() %>%
summarise(média = mean(Idade), total = n())
## # A tibble: 2 x 3
## Sexo média total
## <fct> <dbl> <int>
## 1 feminino 27.9 261
## 2 masculino 30.7 453
Qual a média entre sobreiventes e falecidos por sexo?
tb_titanic_sel1 %>%
group_by(Sexo, Sobreviventes) %>%
na.omit() %>%
summarise(Média = mean(Idade), Total = n())
## `summarise()` has grouped output by 'Sexo'. You can override using the
## `.groups` argument.
## # A tibble: 4 x 4
## # Groups: Sexo [2]
## Sexo Sobreviventes Média Total
## <fct> <fct> <dbl> <int>
## 1 feminino faleceram 25.0 64
## 2 feminino sobreviveram 28.8 197
## 3 masculino faleceram 31.6 360
## 4 masculino sobreviveram 27.3 93
Quais as idades máximas e mínimas entre sobreviventes e falecidos por sexo?
tb_titanic_sel1 %>%
group_by(Sexo, Sobreviventes) %>%
na.omit() %>%
summarise(Idade_máxima = max(Idade),
Idade_mínima = min(Idade))
## `summarise()` has grouped output by 'Sexo'. You can override using the
## `.groups` argument.
## # A tibble: 4 x 4
## # Groups: Sexo [2]
## Sexo Sobreviventes Idade_máxima Idade_mínima
## <fct> <fct> <dbl> <dbl>
## 1 feminino faleceram 57 2
## 2 feminino sobreviveram 63 0.75
## 3 masculino faleceram 74 1
## 4 masculino sobreviveram 80 0.42
Qual a idade média dos sobreviventes e falecidos por Classe
tb_titanic_sel1 %>%
group_by(Classe) %>%
na.omit() %>%
summarise(Média = mean(Idade), Total = n())
## # A tibble: 3 x 3
## Classe Média Total
## <fct> <dbl> <int>
## 1 1ª classe 38.2 186
## 2 2ª classe 29.9 173
## 3 3ª classe 25.1 355
tb_titanic_sel1 %>%
group_by(Sobreviventes, Classe) %>%
na.omit() %>%
summarise(Média = mean(Idade), Total = n())
## `summarise()` has grouped output by 'Sobreviventes'. You can override using the
## `.groups` argument.
## # A tibble: 6 x 4
## # Groups: Sobreviventes [2]
## Sobreviventes Classe Média Total
## <fct> <fct> <dbl> <int>
## 1 faleceram 1ª classe 43.7 64
## 2 faleceram 2ª classe 33.5 90
## 3 faleceram 3ª classe 26.6 270
## 4 sobreviveram 1ª classe 35.4 122
## 5 sobreviveram 2ª classe 25.9 83
## 6 sobreviveram 3ª classe 20.6 85
2 - Acrescente outras combinações, sumários e seleção de casos conforme sua curiosidade. Faça perguntas e tente responder com os dados. Por exemplo, quantas pessoas faleceram acima e abaixo de 30 anos? Quantas sobreviveram nessa faixa etária? Na primeira classe havia mais mulheres ou homens? e na terceira classe? Faça as perguntas que desejar para explorar as funções do {dplyr} e a base de registros do naufrágio do Titanic. Publique o resultado em Rpubs (não se esqueça de colocar o seu nome no cabeçalho e informar que se trata de um exercício do Programa de Formação InfoSoc - UEL).
Sobreviventes por faixa etária
tb_titanic_sel1 %>%
group_by(Idade, Sobreviventes) %>%
na.omit() %>%
summarise(Média = mean(Idade))
## `summarise()` has grouped output by 'Idade'. You can override using the
## `.groups` argument.
## # A tibble: 142 x 3
## # Groups: Idade [88]
## Idade Sobreviventes Média
## <dbl> <fct> <dbl>
## 1 0.42 sobreviveram 0.42
## 2 0.67 sobreviveram 0.67
## 3 0.75 sobreviveram 0.75
## 4 0.83 sobreviveram 0.83
## 5 0.92 sobreviveram 0.92
## 6 1 faleceram 1
## 7 1 sobreviveram 1
## 8 2 faleceram 2
## 9 2 sobreviveram 2
## 10 3 faleceram 3
## # ... with 132 more rows
Idade menor que 30 anos
tb_titanic_sel1 %>%
group_by(Sexo, Classe) %>%
na.omit() %>%
summarise(Idade < 30)
## `summarise()` has grouped output by 'Sexo', 'Classe'. You can override using
## the `.groups` argument.
## # A tibble: 714 x 3
## # Groups: Sexo, Classe [6]
## Sexo Classe `Idade < 30`
## <fct> <fct> <lgl>
## 1 feminino 1ª classe FALSE
## 2 feminino 1ª classe FALSE
## 3 feminino 1ª classe FALSE
## 4 feminino 1ª classe FALSE
## 5 feminino 1ª classe FALSE
## 6 feminino 1ª classe TRUE
## 7 feminino 1ª classe TRUE
## 8 feminino 1ª classe TRUE
## 9 feminino 1ª classe FALSE
## 10 feminino 1ª classe FALSE
## # ... with 704 more rows