Lições do módulo (2/2)
Exploração e Agregação
R foi criado principalmente como um ambiente estatístico, portanto fornece muitas funções integradas para analisar, resumir e compreender a distribuição de dados em vetores ou tabelas.
Funções estatísticas básicas
R permite calcular facilmente as principais medidas de centro e propagação em vetores numéricos:
mean(x): Calcula a média aritmética dos elementos.median(x): Calcula a mediana (o valor do meio).sd(x): Calcula o desvio padrão (uma medida de quão espalhados estão os dados).min(x)emax(x): Retorna os valores mínimo e máximo respectivamente.
values <- c(10, 12, 15, 18, 20, 22)
avg <- mean(values)
dispersion <- sd(values)
cat("Mean:", avg, "- Std Dev:", round(dispersion, 2), "\n")Tratamento de dados ausentes (NA)
No mundo real, os conjuntos de dados geralmente contêm valores ausentes, representados em R pela entidade especial NA (não disponível).
Se você tentar calcular a média ou qualquer outro agregado em um vetor que contenha pelo menos um único NA, R retornará NA como resultado. Para ignorar valores faltantes, você deve passar o argumento lógico na.rm = TRUE (NA remove):
temperatures <- c(18, 21, NA, 24, 19)
# This will return NA
print(mean(temperatures))
# This will ignore the NA and perform the calculation on valid values
print(mean(temperatures, na.rm = TRUE))Resumo global com summary()
A função summary() é uma ferramenta poderosa que fornece uma visão estatística completa de um vetor ou de um quadro de dados inteiro, mostrando mínimo, primeiro quartil, mediana, média, terceiro quartil e máximo:
prices <- c(5, 10, 15, 20, 100)
print(summary(prices))Agregando dados com aggregate
Ao trabalhar com quadros de dados, é comum calcular estatísticas resumidas (como média ou soma) para grupos ou categorias específicas. A função aggregate() em R simplifica este processo:
df <- data.frame(
department = c("HR", "IT", "HR", "IT"),
salary = c(3000, 4500, 3200, 4800)
)
# Calcola la media dei salari per dipartimento
avg_salaries <- aggregate(salary ~ department, data = df, FUN = mean)
print(avg_salaries)A sintaxe salary ~ department significa "analisar a variável salary com base na variável department". O argumento FUN = mean especifica que queremos calcular a média aritmética para cada grupo.
Filtragem avançada com subset
A função subset() fornece uma maneira intuitiva e elegante de extrair subconjuntos de linhas e colunas de um quadro de dados, evitando o uso de colchetes complexos:
employees <- data.frame(
name = c("Alice", "Bob", "Charlie"),
age = c(25, 34, 29),
active = c(TRUE, FALSE, TRUE)
)
# Filtra solo i dipendenti attivi con età superiore a 28
active_employees <- subset(employees, active == TRUE & age > 28)Experimente você mesmo
Dadas as temperaturas do vetor, calcule a média e salve-a na variável média_temp. Em seguida, calcule a mediana e salve-a em median_temp.
Mostrar dica
Usa média_temp <- média(temperaturas) e mediana_temp <- mediana(temperaturas)
Solução disponível após 3 tentativas
Dado o vetor de pontuações contendo um valor NA, calcule o desvio padrão do vetor excluindo os valores faltantes e salve-o na variável sd_scores.
Mostrar dica
Use a função sd() com o argumento na.rm = TRUE: sd_scores <- sd(scores, na.rm = TRUE)
Solução disponível após 3 tentativas
Dado o quadro de dados df, obtenha o resumo estatístico da coluna de valores e salve-o na variável stats_summary.
Mostrar dica
Extraia a coluna usando o operador $ e passe-a para summary(): stats_summary <- summary(df$values)
Solução disponível após 3 tentativas
Dadas as vendas do quadro de dados, use a função agregada() para calcular a soma (FUN = soma) da coluna de receita agrupada pela coluna de região. Salve o resultado na variável region_sales.
Mostrar dica
Use: regional_sales <- agregado(receita ~ região, dados = vendas, FUN = soma)
Solução disponível após 3 tentativas
Dados os produtos do data frame, utilize a função subset() para filtrar apenas os produtos que pertencem à categoria 'Eletrônicos' (categoria == 'Eletrônicos') e possuem preço superior a 100 (preço > 100). Salve o resultado na variável caros_electronics.
Mostrar dica
Use: caros_eletrônicos <- subconjunto (produtos, categoria == 'Eletrônicos' e preço > 100)
Solução disponível após 3 tentativas