Introdução à Ciência de Dados

Soluções dos Exercícios: Funcões select e filter

Prof. Washington Santos da Silva

IFMG - Campus Formiga

25 de abril de 2025

Data Frame gapminder

Dicionário dos dados

A data frame gapminder contida no pacote de mesmo nome, possui 1704 linhas (observações) e 6 colunas (variáveis).

Descrição das variáveis da data frame gapminder
Variável Classe/Tipo Descrição
country factor Nome do país (142 níveis)
continent factor Continente ao qual o país pertence (5 níveis)
year integer Ano da observação (1952 a 2007 em incrementos de 5 anos)
lifeExp double Expectativa de vida ao nascer, em anos
pop integer População total do país
gdpPercap double PIB per capita em US$, ajustado pela inflação

Função select: Soluções dos Exercícios

Nível 1: Primeiros Passos

Exercício 1

Complete o código abaixo para selecionar apenas o país, o ano e a expectativa de vida:

# seleciona país, ano e expectativa de vida
dados_expectativa <- gapminder %>%
  select(country, year, lifeExp) # seleção por inclusão

# exibe as primeiras 6 linhas do resultado
head(dados_expectativa)
# A tibble: 6 × 3
  country      year lifeExp
  <fct>       <int>   <dbl>
1 Afghanistan  1952    28.8
2 Afghanistan  1957    30.3
3 Afghanistan  1962    32.0
4 Afghanistan  1967    34.0
5 Afghanistan  1972    36.1
6 Afghanistan  1977    38.4

Exercício 2

Escreva o código para selecionar todas as variáveis EXCETO população e PIB per capita:

# seleciona todas as variáveis, exceto população e pib per capita
dados_sem_pop_pib <- gapminder %>%
  select(-pop, -gdpPercap) # seleção por exclusão

# exibe as primeiras 6 linhas do resultado
head(dados_sem_pop_pib)
# A tibble: 6 × 4
  country     continent  year lifeExp
  <fct>       <fct>     <int>   <dbl>
1 Afghanistan Asia       1952    28.8
2 Afghanistan Asia       1957    30.3
3 Afghanistan Asia       1962    32.0
4 Afghanistan Asia       1967    34.0
5 Afghanistan Asia       1972    36.1
6 Afghanistan Asia       1977    38.4

Nível 2: Técnicas Avançadas

Exercício 3

Complete o código abaixo para selecionar apenas as variáveis que começam com a letra “c”:

# seleciona apenas as variáveis que começam com a letra "c"
variaveis_com_c <- gapminder %>%
  select(starts_with("c"))

# exibe as primeiras 6 linhas do resultado
head(variaveis_com_c)
# A tibble: 6 × 2
  country     continent
  <fct>       <fct>    
1 Afghanistan Asia     
2 Afghanistan Asia     
3 Afghanistan Asia     
4 Afghanistan Asia     
5 Afghanistan Asia     
6 Afghanistan Asia     

Exercício 4

Escreva o código para selecionar todas as variáveis desde “country” até “pop” (em sequência na tabela):

# selecionar todas as variáveis entre "country" e "pop"
variaveis_sequencia <- gapminder %>%
  select(country:pop)

# exibe as primeiras 6 linhas do resultado
head(variaveis_sequencia)
# A tibble: 6 × 5
  country     continent  year lifeExp      pop
  <fct>       <fct>     <int>   <dbl>    <int>
1 Afghanistan Asia       1952    28.8  8425333
2 Afghanistan Asia       1957    30.3  9240934
3 Afghanistan Asia       1962    32.0 10267083
4 Afghanistan Asia       1967    34.0 11537966
5 Afghanistan Asia       1972    36.1 13079460
6 Afghanistan Asia       1977    38.4 14880372

Desafio

Desafio

Crie um código que selecione variáveis usando dois métodos diferentes na mesma instrução:

  • Todas as variáveis que contêm a letra “p” OU
  • Todas as variáveis que terminam com “p”
# seleciona todas as variáveis que contêm a letra "p" OU
# que terminam com "p"
variaveis_combinadas <- gapminder %>%
  select(contains("p") | ends_with("p"))

# exibe as primeiras 6 linhas do resultado
head(variaveis_combinadas)
# A tibble: 6 × 3
  lifeExp      pop gdpPercap
    <dbl>    <int>     <dbl>
1    28.8  8425333      779.
2    30.3  9240934      821.
3    32.0 10267083      853.
4    34.0 11537966      836.
5    36.1 13079460      740.
6    38.4 14880372      786.

Função filter: Soluções dos Exercícios

Nível 1: Primeiros Passos com filter()

Exercício 1

Complete o código abaixo para filtrar apenas os países da América do sul no ano de 2007.

Entretanto, a variável continent não possui o valor “South America”, apenas “Americas”. Os valores possíveis da variável continent podem ser encontrados usando a função:

# exibe os valores únicos da variável continent
unique(gapminder$continent)
[1] Asia     Europe   Africa   Americas Oceania 
Levels: Africa Americas Asia Europe Oceania

Exercício 1 Corrigido

Portanto, o texto correto do exercício deve ser:

Complete o código abaixo para filtrar apenas os países das Americas no ano de 2007.

# dados apenas dos países da América do Sul no ano 2007
paises_americas_2007 <- gapminder %>%
  filter(continent == "Americas", year == 2007)

# exibe as primeiras 6 linhas do resultado
head(paises_americas_2007)
# A tibble: 6 × 6
  country   continent  year lifeExp       pop gdpPercap
  <fct>     <fct>     <int>   <dbl>     <int>     <dbl>
1 Argentina Americas   2007    75.3  40301927    12779.
2 Bolivia   Americas   2007    65.6   9119152     3822.
3 Brazil    Americas   2007    72.4 190010647     9066.
4 Canada    Americas   2007    80.7  33390141    36319.
5 Chile     Americas   2007    78.6  16284741    13172.
6 Colombia  Americas   2007    72.9  44227550     7007.

Exercício 2

Filtre a data frame gapminder para mostrar apenas os dados do Brasil:

# dados apenas sobre o Brasil
dados_brasil <- gapminder %>%
  filter(country == "Brazil")

# exibe as primeiras 6 linhas do resultado
head(dados_brasil)
# A tibble: 6 × 6
  country continent  year lifeExp       pop gdpPercap
  <fct>   <fct>     <int>   <dbl>     <int>     <dbl>
1 Brazil  Americas   1952    50.9  56602560     2109.
2 Brazil  Americas   1957    53.3  65551171     2487.
3 Brazil  Americas   1962    55.7  76039390     3337.
4 Brazil  Americas   1967    57.6  88049823     3430.
5 Brazil  Americas   1972    59.5 100840058     4986.
6 Brazil  Americas   1977    61.5 114313951     6660.

Nível 2: Combinando Condições

Exercício 3

Crie um filtro para encontrar países que atendam a TODAS estas condições:

  • Pertencem à Ásia
  • Têm população acima de 50 milhões
  • Dados do ano 2007
paises_asia_populosos_2007 <- gapminder %>%
  filter(continent == "Asia" &
    pop > 50000000 &
    year == 2007)

# exibindo todos as observações (linhas)
# do resultado
print(paises_asia_populosos_2007, n = Inf)
# A tibble: 10 × 6
   country     continent  year lifeExp        pop gdpPercap
   <fct>       <fct>     <int>   <dbl>      <int>     <dbl>
 1 Bangladesh  Asia       2007    64.1  150448339     1391.
 2 China       Asia       2007    73.0 1318683096     4959.
 3 India       Asia       2007    64.7 1110396331     2452.
 4 Indonesia   Asia       2007    70.6  223547000     3541.
 5 Iran        Asia       2007    71.0   69453570    11606.
 6 Japan       Asia       2007    82.6  127467972    31656.
 7 Pakistan    Asia       2007    65.5  169270617     2606.
 8 Philippines Asia       2007    71.7   91077287     3190.
 9 Thailand    Asia       2007    70.6   65068149     7458.
10 Vietnam     Asia       2007    74.2   85262356     2442.

Desafio

Desafio

Encontre países com expectativa de vida acima de 75 anos, mas PIB per capita abaixo de 10.000 dólares em 2007.

paises_desafio <- gapminder %>%
  filter(
    lifeExp > 75 &
      gdpPercap < 10000 &
      year == 2007
  )

# exibindo todos as observações (linhas)
# do resultado
print(paises_desafio, n = Inf)
# A tibble: 5 × 6
  country    continent  year lifeExp      pop gdpPercap
  <fct>      <fct>     <int>   <dbl>    <int>     <dbl>
1 Albania    Europe     2007    76.4  3600523     5937.
2 Costa Rica Americas   2007    78.8  4133884     9645.
3 Cuba       Americas   2007    78.3 11416987     8948.
4 Panama     Americas   2007    75.5  3242173     9809.
5 Reunion    Africa     2007    76.4   798094     7670.