library(learnr) knitr::opts_chunk$set(echo = TRUE) tutorial_options(exercise.cap = "Código", exercise.timelimit = 300) # vetores usados nos exercícios frutas <- c("maçã", "banana", "melancia") dolar_subiu <- c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE) numeross <- -4:2
Exercícios
Boas vindas!
Este material faz parte do curso R para Ciência de Dados I, da Curso-R.
Caso tenha dúvidas, pedimos que escreva no Discourse.
A) Crie um vetor com o nome de três frutas (maçã, banana, melancia) e guarde em um objeto chamado frutas
.
frutas __ _(___, ___, ___)
frutas <- c(___, ___, ___)
frutas <- c("maçã", "banana", "melancia")
frutas <- c("maçã", "banana", "melancia")
b) Use a função length()
para contar o tamanho do vetor. Certifique-se que retorna 3.
length(_____)
length(frutas)
c) Use []
para retornar a primeira fruta do vetor.
frutas[__]
frutas[1]
d) Observe a saída de paste("eu gosto de", frutas)
e verifique se o tamanho do vetor mudou.
paste("eu gosto de", frutas) # O tamanho do vetor continua o mesmo: 3. # O R aplicou a função `paste()` para cada elemento do vetor frutas.
A base de dados airquality
apresenta dados de qualidade do ar obtidos diariamente, em Nova York, entre os meses de maio e setembro de 1973:
airquality
Use o data.frame airquality para responder às questões abaixo:
a) Quantas colunas airquality
tem?
___(airquality)
ncol(airquality)
b) Quantas linhas airquality
tem?
___(airquality)
nrow(airquality)
c) O que a função head()
retorna?
___(airquality)
head(airquality) # A função head() retorna as 6 primeiras linhas da base.
d) Quais são os nomes das colunas?
___(airquality)
colnames(airquality)
e) Qual é a classe da coluna Ozone
? Dicas: class()
e $
class(airquality______)
class(airquality$Ozone)
f) O que o código dplyr::glimpse(airquality)
retorna?
dplyr::glimpse(airquality) # A função glimpse() do pacote dpyr retorna várias informações interessantes: # O número de linhas # O número de colunas # O nome das colunas # O tipo de cada coluna # Algumas observações da coluna, para ter uma ideia dos dados disponíveis.
g) Utilizando a resposta da questão anterior, quais são os tipos de cada coluna da tabela airquality
?
a) Analise as duas linhas de códigos abaixo. Os resultados são iguais? Porquê?
c(1,2,3) - 1 # código 1 c(1,2,3) - c(1,1,1) # código 2
c(1,2,3) - 1 # código 1 c(1,2,3) - c(1,1,1) # código 2 # Os resultados são iguais. # No caso do código 1, como foi solicitado subtrair usando vetores de tamanhos diferentes, o R reciclou o segundo elemento. # No caso do código 2, a subtração foi feita baseado na posição dos vetores. Exemplo: 1-1, 2-1, 3-1.
b) Considere o vetor booleano abaixo:
dolar_subiu <- c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE)
Este vetor tem informação de uma semana (7 dias) indicando se o dolar subiu (TRUE
) (ou não subiu - FALSE
) no respectivo dia.
Interprete os resultados dos códigos abaixo:
I) length(dolar_subiu)
length(dolar_subiu) # A função length retorna o tamanho do vetor. # O vetor 'dolar_subiu' possui 7 elementos.
II) dolar_subiu[2]
(ps: a semana começa no domingo)
dolar_subiu[2] # O segundo elemento selecionado representa a segunda-feira. # Na segunda-feira, o dolar subiu (TRUE).
III) sum(dolar_subiu)
sum(dolar_subiu) # A função sum() realiza a soma dos elementos do vetor. # Como o vetor possui dados do tipo lógico (TRUE ou FALSE), o R entende que TRUE = 1 e FALSE = 0. # O resultado de sum(dolar_subiu) é 4, portanto o dólar subiu em 4 dias na semana.
IV) mean(dolar_subiu)
mean(dolar_subiu) # A função sum() realiza a média dos elementos do vetor. # O resultado representa a média de dias em que o dólar subiu.
c) Agora observe a saída de as.numeric(dolar_subiu)
. O que o R fez?
as.numeric(dolar_subiu) # A função as.numeric() transforma um vetor em numérico (quando possível). # No vetor que o R retornou, TRUE foi transformado em 1, e FALSE foi transformado em 0.
Use o data.frame airquality
para responder às questões abaixo. Vamos calcular o desvio padrão de Ozone sem usar a função sd()
.
airquality
a) tire a média da coluna Ozone
. Dica: use mean(x, na.rm = TRUE)
.
b) subtraia da colunaOzone
a sua própria média (centralização).
c) eleve o vetor ao quadrado.
d) tire a média do vetor.
e) tire a raíz quadrada.
f) compare o resultado com sd(airquality$Ozone, na.rm = TRUE)
Dica: guarde os resultados de cada item em objetos para poderem ser usados depois!
# a) media_ozone <- ___ # b) ozone_centralizado <- ___ # c) ozone_centralizado_ao_quadrado <- ___ # d) media_ozone_centralizado_ao_quadrado <- ___ # e) sd_ozone_calculado <- ___ # f) sd_ozone_funcao <- ___ sd_ozone_calculado ___ sd_ozone_funcao
# a) media_ozone <- mean(airquality$Ozone, na.rm = TRUE) # b) ozone_centralizado <- airquality$Ozone - media_ozone # c) ozone_centralizado_ao_quadrado <- ozone_centralizado ^ 2 # d) media_ozone_centralizado_ao_quadrado <- mean(ozone_centralizado_ao_quadrado, na.rm = TRUE) # e) sd_ozone_calculado <- sqrt(media_ozone_centralizado_ao_quadrado) sd_ozone_calculado # f) sd_ozone_funcao <- sd(airquality$Ozone, na.rm = TRUE) sd_ozone_funcao # São iguais? sd_ozone_calculado == sd_ozone_funcao # Os resultados são diferentes!
a) Crie uma função chamada numero_ao_quadrado()
que receba um número e retorne o quadrado deste número.
Teste se a função funciona: numero_ao_quadrado(3)
deve retornar o valor 9.
numero_ao_quadrado <- function(____){ _____ } numero_ao_quadrado(3)
numero_ao_quadrado <- function(numero){ numero ^ 2 } # Teste se a função funciona: numero_ao_quadrado(3)
b) DESAFIO! Crie uma função que recebe 2 números x
e y
e retorna a raiz quadrada da soma desses números.
Depois teste a função para valores x = 6
e y = 3
, o resultado gerado pela função deve ser 3.
Dica: sqrt()
é a função para raiz quadrada.
raiz_da_soma <- function(x, y){ ______ <- x + y ______ } # Teste se a função funciona: raiz_da_soma(x = 6, y = 3)
raiz_da_soma <- function(x, y){ soma <- x + y sqrt(soma) } # Teste se a função funciona: raiz_da_soma(x = 6, y = 3)
a) Use o vetor numeross
abaixo para responder as questões seguintes:
numeross <- -4:2 numeross
I) Escreva um código que devolva apenas valores positivos do vetor numeross
.
numeross[numeross ____]
numeross[numeross > 0]
II) Escreva um código que devolta apenas os valores pares do vetor numeross
. Dica: o operador %%
devolve o resto da divisão entre dois números.
numeross[numeross __ __ __ __]
numeross[numeross %% __ == __]
numeross[numeross %% 2 == 0]
III) Filtre o vetor para que retorne apenas aqueles valores que quando elevados a 2 são menores do que 4.
numeross[_______________]
numeross[(numeros ^ 2) _____]
numeross[(numeross ^ 2) < 4]
b) Use o data.frame airquality
para responder às questões abaixo:
airquality
I) Conte quantos NA
s tem na coluna Solar.R
. Dica: use '$
', is.na()
e sum()
:
___(___(airquality$Solar.R))
sum(___(airquality$Solar.R))
sum(is.na(airquality$Solar.R))
II) Filtre a tabela airquality
com apenas linhas em que Solar.R
é NA
.
____[___(airquality$Solar.R) ___ ]
____[is.na(airquality$Solar.R) ___ ]
airquality[is.na(airquality$Solar.R), ]
III) Filtre a tabela airquality
com apenas linhas em que Solar.R
NÃO é NA
.
____[____(airquality$Solar.R) ___ ]
____[!is.na(airquality$Solar.R) ___ ]
airquality[!is.na(airquality$Solar.R), ]
IV) Filtre a tabela airquality
com apenas linhas em que Solar.R
NÃO é NA
e Month
é igual a 5.
airquality[_________________ _________, ]
airquality[!is.na(airquality$Solar.R) & _________, ]
airquality[!is.na(airquality$Solar.R) & airquality$Month == 5, ]
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.