# TUTORIAL DE COMO UTILIZAR O RSTUDIO PARA ANÁLISE BÁSICA DE DADOS # PROF. THIAGO HOLANDA - CORECON-CE # PARA DÚVIDAS: thiago.holanda@ifce.edu.br # ACESSE MEU SITE: www.holanda.blog # INSCREVA-SE NO MEU CANAL: https://www.youtube.com/ProfThiagoHolanda #LIÇÃO 0: APRENDAR A DEFINIR O SEU LOCAL DE TRABALHO setwd("C:/Users/thiag/OneDrive/Documentos/DADOS DO R/TREINO/CORECON") getwd() # LIÇÃO 1: No R, qualquer coisa que você cria é um objeto (um espaço na memória com um nome). x <- 10 y <- 20 soma <- x + y z <- soma^2 #Dicas: Sempre usar <- para atribuição. // R é case sensitive (x ≠ X). #LIÇÃO 2: Estrutura de dados #vetores notas <- c(8.5,9,7,6.5,10) mean(notas) sd(notas) #data frame alunos <- data.frame(Nome = c("Ana","Bruno","Carlos"), Nota = c(8.5, 7.0, 9.2), Idade = c(20, 22, 19)) View(alunos) print(alunos) alunos alunos$Nome alunos[ , "Nota"] #CORRELAÇÃO ENTRE DADOS: cor(alunos$Nota, alunos$Idade) # correlação de Pearson cov(alunos$Nota, alunos$Idade) # covariância #LIÇÃO 3: APRENDENDO SOBRE PACOTES installed.packages() # lista todos os pctes library() # mostra pacotes carregados install.packages(tidyverse) #basta executar apenas 1 vez na vida library(tidyverse) # significa que você está CHAMANDO o pacote, tem que fazer toda vez que começar #dica: PEDIR AJUDA help("tidyverse") ?tidyverse #LIÇÃO 4: MERGULHANDO NO TIDYVERSE library(tibble) # para criar data frames no estilo tidy funcionarios <- tibble( nome = c("Ana", "Bruno", "Carlos", "Daniela", "Eduardo", "Fernanda", "Gabriel", "Helena", "Igor", "Joana", "Kleber", "Larissa", "Marcos", "Natália", "Otávio", "Patrícia", "Rafael", "Sofia", "Tiago", "Vitória"), sexo = c("F", "M", "M", "F", "M", "F", "M", "F", "M", "F", "M", "F", "M", "F", "M", "F", "M", "F", "M", "F"), idade = c(25, 32, 29, 41, 37, 26, 30, 28, 45, 34, 39, 27, 50, 31, 36, 40, 29, 24, 33, 38), salario = c(3500, 4200, 5000, 6200, 4800, 3100, 4500, 3900, 7200, 4100, 5300, 3400, 8000, 3600, 4700, 6000, 3800, 3000, 4400, 5100), raca = c("Branca", "Parda", "Preta", "Branca", "Parda", "Indígena", "Branca", "Preta", "Branca", "Parda", "Preta", "Branca", "Branca", "Parda", "Preta", "Indígena", "Branca", "Parda", "Preta", "Branca"), tempo_empresa = c(2, 5, 3, 10, 7, 1, 4, 6, 15, 8, 12, 2, 20, 3, 9, 11, 4, 1, 7, 13), fala_ingles = c("Sim", "Não", "Sim", "Não", "Sim", "Não", "Sim", "Não", "Sim", "Não", "Não", "Sim", "Sim", "Não", "Não", "Sim", "Não", "Sim", "Não", "Sim"), departamento = c("RH", "TI", "Financeiro", "Marketing", "TI", "RH", "Financeiro", "TI", "Diretoria", "Marketing", "TI", "Financeiro", "Diretoria", "RH", "TI", "Marketing", "Financeiro", "RH", "TI", "Diretoria") ) # Visualizar print(funcionarios) view(funcionarios) # CRIAR E TRANSFORMAR COLUNA # CRIANDO A COLUNA SALÁRIO ANUAL funcionarios %>% # pipe - Ele pega o objeto anterior (funcionarios) e passa como entrada para a função seguinte (mutate) mutate(salario_anual = salario * 12) view(funcionarios) #aparece apenas no console #para aparecer também no dataframe original funcionarios <- funcionarios %>% mutate(salario_anual = salario * 12) #Existe CORRELAÇÃO entre idade e salário? cor(funcionarios$idade,funcionarios$salario) #Posso calcular a CORRELAÇÃO entre raça e salário? #Raça é categórica, de forma que não é possível realizar essa correlação. #PORÉM, podemos realizar uma análise por meio de BOXPLOT library(ggplot2) ggplot(funcionarios, aes(x = raca, y = salario, fill = raca)) + geom_boxplot() + labs(title = "Distribuição de salários por raça", x = "Raça", y = "Salário") #Como descobrir a média salarial por departamento? #maneira mais simples: usar o group_by() + summarise() do dplyr: library(dplyr) media_departamentos <- funcionarios %>% group_by(departamento) %>% #Agrupa os dados pela coluna departamento.Todas as operações seguintes serão feitas separadamente para cada departamento. summarise( #serve para resumir os dados em estatísticas por grupo media_salario = mean(salario), #cria uma nova coluna chamada media_salario, que calcula a média da coluna salario para cada departamento. mediana_salario = median(salario), #cria uma coluna com a mediana dos salários em cada departamento. qtd_funcionarios = n(), #cria uma coluna com a quantidade de registros (funcionários) por departamento. .groups = "drop" #informa ao R que, depois do resumo, ele deve tirar o agrupamento (para evitar que o objeto resultante fique “preso” em grupos ) print(media_departamentos) #FIM DA PRIMEIRA AULA ######### DIA 2 ######### # CRIANDO UM GRÁFICO DE COLUNAS: salário médio por departamento library(dplyr) # carrega funções de manipulação (group_by, summarise, %>%) library(ggplot2) # carrega o sistema de gráficos base_dep <- funcionarios %>% # usa a base 'funcionarios' e passa adiante (pipe) group_by(departamento) %>% # agrupa as linhas por departamento summarise(media_sal = mean(salario), .groups = "drop") # calcula a média de 'salario' em cada grupo e remove o agrupamento ggplot(base_dep, aes(x = reorder(departamento, media_sal), y = media_sal)) + # cria o gráfico; mapeia x/y e ordena x pela média geom_col() + # desenha barras usando os valores já prontos de y coord_flip() + # inverte os eixos → barras horizontais (melhor leitura) labs(title = "Salário médio por departamento", # título do gráfico x = "Departamento", y = "Salário médio") + # rótulos dos eixos theme_minimal() # aplica um tema limpo # GRÁFICO DE TENDÊNCIA: IDADE X SALÁRIO (DISPERSÃO, LINHA DE TENDÊNCIA) ggplot(funcionarios, aes(x = idade, y = salario)) + # usa a base original; mapeia idade no eixo X e salário no Y geom_point() + # plota um ponto por funcionário geom_smooth(method = "lm", se = FALSE) + # adiciona linha de tendência linear (lm); sem área de incerteza labs(title = "Relação entre idade e salário", # título do gráfico x = "Idade", y = "Salário") + # rótulos dos eixos theme_minimal() # tema limpo # GRÁFICO DE BARRAS EMPILHADAS (composição de sexo por departamento) base_comp <- funcionarios %>% # começa da base 'funcionarios' count(departamento, sexo) %>% # conta quantos por combinação depto × sexo group_by(departamento) %>% # agrupa por departamento mutate(pct = n / sum(n)) %>% # calcula percentual dentro de cada departamento ungroup() # remove agrupamento (boa prática) ggplot(base_comp, aes(x = departamento, # eixo X: departamento y = pct, # altura: percentual (0–1) fill = sexo)) + # cor das fatias: sexo geom_col() + # barras empilhadas (usa os valores de 'y') scale_y_continuous(labels = scales::percent) + # formata o eixo Y como porcentagem labs(title = "Composição de sexo por departamento", # título x = "Departamento", y = "Participação (%)", fill = "Sexo") + # rótulos theme_minimal() #Importação de Dados com readr #A principal diferença é que read.csv() é uma função do R base que pode ser mais lenta e menos inteligente na inferência de tipos de dados, enquanto read_csv() do pacote readr (parte do tidyverse) é mais rápido, consome menos memória, produz um tipo de dado mais moderno chamado tibble, e oferece mais controle na importação de dados, lidando melhor com problemas de codificação e nomes de colunas. library(readr) # Importando CSV vendas <- read_csv("salesR.csv") print(vendas) View(vendas) # Visualizar primeiras linhas head(vendas) # Estrutura do dataset glimpse(vendas) #Limpeza e Preparação de Dados #Renomear colunas vendas <- vendas %>% rename(produtos = Produto, valor = `Valor Total`) # Filtrar só vendas acima de 1500 vendas %>% filter(valor > 1500) #Visualização de Dados com ggplot2 #Estrutura do ggplot2: ggplot(data, aes(...)) + geom_...(). library(ggplot2) # Gráfico de barras ggplot(vendas, aes(x = produtos, y = valor)) + #mapeia a coluna produto para o eixo X (categorias) e valor para o eixo Y (altura das barras). geom_col(fill = "steelblue") + #desenha barras usando os valores já existentes em y coord_flip() #inverte os eixos → vira barras horizontais, ótimo quando os nomes dos produtos são longos. # Histograma ggplot(vendas, aes(x = valor)) + geom_histogram(bins = 30, fill = "purple", color = "white") # Boxplot por forma de pagamento ggplot(vendas, aes(x = `Forma de Pagamento`, y = valor, fill = `Forma de Pagamento`)) + geom_boxplot() #Análise Exploratória de Dados (EDA) # Estatísticas básicas summary(vendas$valor) summary(vendas$produtos) summary(vendas$Data) # Estatísticas por produto vendas %>% group_by(produtos) %>% summarise( media_valor = mean(valor), max_valor = max(valor), min_valor = min(valor), n = n() #quantidade de linhas (transações) do produto. ) # Ranking formas de pagamento vendas %>% count(`Forma de Pagamento`, sort = TRUE) #conta as formas de pagamento e o TRUE sinaliza que devem ser colocadas em ordem decrescente # Qual produto trouxe mais faturamento? library(dplyr) faturamento_produto <- vendas %>% #crie um novo objeto a partir de vendas group_by(produtos) %>% #agrupo por produtos daqui em diante summarise( faturamento_total = sum(valor, na.rm = TRUE), #calcula a soma da coluna valor dentro de cada produto. .groups = "drop" ) %>% arrange(desc(faturamento_total)) #ordena do maior faturamento para o menor. print(faturamento_produto) #FINAL DA AULA# # PARA DÚVIDAS: thiago.holanda@ifce.edu.br # ACESSE MEU SITE: www.holanda.blog # INSCREVA-SE NO MEU CANAL: https://www.youtube.com/ProfThiagoHolanda #OBRIGADO