# remotes::install_github("curso-r/CursoRTarefas") library(CursoRTarefas) CursoRTarefas::adicionar_chunk_setup()
CursoRTarefas::adicionar_codigo_pre_tutorial(curso = "Introdução à programação com R", url = "https://loja.curso-r.com/introduc-o-a-programac-o-com-r.html")
Em R, o NA
(do inglês Not Available) representa um dado faltante ou indisponível. Esse conceito será tratado em aulas futuras com maior profundidade, mas é importante saber que eles existem e são muito comuns! A maioria das bases de dados contém dados faltantes (os NA
).
Uma característica do NA
é: qualquer operação que seja realizada com dados NA
resultará em NA
. A ideia é que NA
representa um valor que não sabemos qual é!
Por exemplo:
# somar um número com NA resultará em NA 1 + NA conjunto <- c(1, 2, 3, NA) # calcular a média de valores em um vetor que tenha NA # resultará em NA mean(conjunto)
Algumas funções para lidar com vetores possuem o argumento na.rm
, usado para remover os NA
antes de realizar a operação desejada. Por exemplo, para calcular a média dos valores do vetor chamado conjunto
, que contém alguns números e um NA
, podemos usar o argumento na.rm = TRUE
para que o NA
seja removido do conjunto para que a média seja calculada:
conjunto <- c(1, 2, 3, NA) mean(conjunto, na.rm = TRUE)
Lembre-se: algumas funções usadas para realizar operações com vetores, como:
sum()
,mean()
,var()
,sd()
, aceitam o argumentona.rm=TRUE
para remover os valores faltantes (NA
).
airquality
Use o dataframe airquality
para responder às questões abaixo. Vamos calcular o desvio padrão de Ozone sem usar a função sd()
. O resultado de um exercício é usado no próximo, então iremos guardar o resultado de cada etapa em um objeto.
a) Calcule a média da coluna Ozone
(excluindo os NAs), e guarde o resultado em um objeto chamado media_ozone
. Dica: para remover os NA's, utilize o argumento na.rm=TRUE
da função que calcula a média.
# a) media_ozone <- #___ media_ozone
# a) media_ozone <- mean(_____$_____, na.rm = TRUE) media_ozone
# a) media_ozone <- mean(airquality$Ozone, na.rm = TRUE) media_ozone
grade_this({ if (identical(.result, .solution)) { pass("Muito bom! Você calculou a média da coluna Ozone corretamente, excluindo os NAs.") } fail() })
b) Subtraia da coluna Ozone
a sua própria média (centralização), e guarde o resultado em um objeto chamado ozone_centralizado
.
media_ozone <- mean(airquality$Ozone, na.rm = TRUE)
# b) ozone_centralizado <- #___ ozone_centralizado
# b) ozone_centralizado <- ____$____ - media_ozone ozone_centralizado
# b) ozone_centralizado <- airquality$Ozone - media_ozone ozone_centralizado
grade_this({ if (identical(.result, .solution)) { pass("Muito bom! Você calculou a centralização da coluna Ozone.") } fail() })
c) Eleve o vetor ozone_centralizado
ao quadrado, e guarde o resultado em um objeto chamado ozone_centralizado_ao_quadrado
.
media_ozone <- mean(airquality$Ozone, na.rm = TRUE) ozone_centralizado <- airquality$Ozone - media_ozone
# c) ozone_centralizado_ao_quadrado <- # ___ ozone_centralizado_ao_quadrado
# c) ozone_centralizado_ao_quadrado <- ___ ^ 2 ozone_centralizado_ao_quadrado
# c) ozone_centralizado_ao_quadrado <- ozone_centralizado ^ 2 ozone_centralizado_ao_quadrado
grade_this({ if (identical(.result, .solution)) { pass("Muito bom! Você elevou o vetor `ozone_centralizado` ao quadrado.") } fail() })
d) Calcule a média do vetor ozone_centralizado_ao_quadrado
, e guarde o resultado em um objeto chamado media_ozone_centralizado_ao_quadrado
.
media_ozone <- mean(airquality$Ozone, na.rm = TRUE) ozone_centralizado <- airquality$Ozone - media_ozone ozone_centralizado_ao_quadrado <- ozone_centralizado ^ 2
# d) media_ozone_centralizado_ao_quadrado <- # ___ media_ozone_centralizado_ao_quadrado
# d) media_ozone_centralizado_ao_quadrado <- mean(___, na.rm = TRUE) media_ozone_centralizado_ao_quadrado
# d) media_ozone_centralizado_ao_quadrado <- mean(ozone_centralizado_ao_quadrado, na.rm = TRUE) media_ozone_centralizado_ao_quadrado
grade_this({ if (identical(.result, .solution)) { pass("Correto! Falta pouco.") } fail() })
e) Calcule a raíz quadrada do objeto media_ozone_centralizado_ao_quadrado
, e guarde o resultado em um objeto chamado desvio_padrao_ozone_calculado
. Dica: para calcular a raíz quadrada, é possível usar a função sqrt()
.
media_ozone <- mean(airquality$Ozone, na.rm = TRUE) ozone_centralizado <- airquality$Ozone - media_ozone ozone_centralizado_ao_quadrado <- ozone_centralizado ^ 2 media_ozone_centralizado_ao_quadrado <- mean(ozone_centralizado_ao_quadrado, na.rm = TRUE)
# e) desvio_padrao_ozone_calculado <- # ___ desvio_padrao_ozone_calculado
# e) desvio_padrao_ozone_calculado <- sqrt(___) desvio_padrao_ozone_calculado
desvio_padrao_ozone_calculado <- sqrt(media_ozone_centralizado_ao_quadrado) desvio_padrao_ozone_calculado
grade_this({ if (identical(.result, .solution)) { pass("Correto! Parabéns, até aqui você calculou o desvio padrão da coluna Ozone.") } fail() })
f) Calcule o desvio padrão da coluna Ozone usando a função sd()
(dica: sd(airquality$Ozone, na.rm = TRUE)
). Verifique se o resultado da função sd()
é diferente do cálculo que fizemos anteriormente. Caso você tenha dúvidas sobre o cálculo realizado pela função sd , você pode acessar a sessão Details da documentação dessa função.
media_ozone <- mean(airquality$Ozone, na.rm = TRUE) ozone_centralizado <- airquality$Ozone - media_ozone ozone_centralizado_ao_quadrado <- ozone_centralizado ^ 2 media_ozone_centralizado_ao_quadrado <- mean(ozone_centralizado_ao_quadrado, na.rm = TRUE) desvio_padrao_ozone_calculado <- sqrt(media_ozone_centralizado_ao_quadrado)
# f) sd_ozone_funcao <- #___ sd_ozone_funcao desvio_padrao_ozone_calculado == sd_ozone_funcao
# f) sd_ozone_funcao <- sd(___, na.rm = TRUE) sd_ozone_funcao desvio_padrao_ozone_calculado == sd_ozone_funcao
# f) sd_ozone_funcao <- sd(airquality$Ozone, na.rm = TRUE) sd_ozone_funcao desvio_padrao_ozone_calculado == sd_ozone_funcao
grade_this({ if (identical(.result, .solution)) { pass("Correto! Os resultados são diferentes! Isso porque a função `sd()` calcula o desvio padrão utilizando a variância amostral. Por outro lado, utilizamos a variância populacional para calcular o desvio padrão.") } fail() })
Se você completou a tarefa e quer submeter, clique no botão abaixo ('Generate') para gerar o seu código hash e envie usando o formulário a seguir:
learnrhash::encoder_logic()
learnrhash::encoder_ui(ui_before = " ", ui_after = " ")
CursoRTarefas::adicionar_codigo_pos_tutorial(url_form = params$url_form)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.