SlideServe
Menu
Préférences
© SlideServe · v2026

Data Frames ( tabelas ) e Matrizes

abel-kemp avatar
23 diapositives · 414 Views · Nov 12, 2014

Data Frames ( tabelas ) e Matrizes. May 2010. Sumário. Data Frames ( tabelas ) Matrizes Importar dados para R. Criação de um Data Frame. Primeiro preparamos os vectores com os dados: > alunos <- c(' zé','ana','zé','zé','mi','ana ')

Data Frames ( tabelas ) e Matrizes - slide 1
01 / 23Data Frames ( tabelas ) e Matrizes
1 / 17

Télécharger la présentation

Data Frames ( tabelas ) e Matrizes
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Data Frames (tabelas) e Matrizes May2010 Faculdade de Economia do Porto

  2. Sumário • Data Frames (tabelas) • Matrizes • Importar dados para R Faculdade de Economia do Porto

  3. Criação de um Data Frame Primeiropreparamososvectores com os dados: > alunos <- c('zé','ana','zé','zé','mi','ana') > discs <- c('mat','inf','micro','inf','mat','mat') > notas<- c(12,15,10,11,17,10) Depoiscriamos o data frame, indicandonomes de colunas e osvalores: > notas <- data.frame(aluno=alunos, disc=discs, nota=notas) > notas aluno disc nota 1 zé mat 12 2 anainf 15 3 zé micro 10 4 zéinf 11 5 mi mat 17 6 ana mat 10 As colunas com valorescategóricos foramconvertidasem“factores” Faculdade de Economia do Porto

  4. Preparação fácil de Data Frame Primeiropreparamos um data frame vazio: > notas1 <- data.frame() Depoischamamos a função edit(..) parainserirosvalores (maneirainteractiva): notas1 <- edit(notas1) Se osvaloresestiverbemdigitados, teremos: > notas1 aluno disc nota 1 zé mat 12 2 anainf 15 3 zé micro 10 4 zéinf 11 5 mi mat 17 6 ana mat 10 Faculdade de Economia do Porto

  5. Data frames e matrizes • Data frames • cadacolunapode ser vector ou factor • Matrizes • todososelementossão do mesmotipo • Indexação • idênticaem data frames e matrizes • masnos data frames podemosusarainda $ Faculdade de Economia do Porto

  6. Selecção de Elementos de Data Frames > notas$aluno [1] zéanazézé mi ana Levels: ana mi zé > notas$aluno[1] [1] zé > notas$notas [1] 12,15,10,11,17,10 > notas$nota[1] [1] 12 > notas$nota> 12 [1] FALSE TRUE FALSE FALSE TRUE FALSE Quemtirounotasacima de 12? > notas$aluno[notas$nota>12] [1] ana mi Levels: ana mi zé Faculdade de Economia do Porto

  7. Alterar elementos de data frames > notas[4,3] [1] 11 Mudaa nota do zédainformáticapara 18 > notas[4,3] <- 18 ou > notas$nota[4] <- 18 ou > notas$nota[notas$aluno=='zé'& notas$disc=='inf'] <- 18 masháumafunção com um interface simpático… > notas <- edit(notas) Faculdade de Economia do Porto

  8. Algumas funções úteis > nrow(notas) [1] 6 > ncol(notas) [1] 3 > colnames(notas) [1] "aluno" "disc" "nota" > rownames(notas) [1] "1" "2" "3" "4" "5" "6" "7" > mode(notas) [1] "list" > class(notas) [1] "data.frame“ > summary(notas) aluno disc nota ana:2 inf :2 10:2 mi :1 mat :3 12:1 zé :3 micro:1 15:1 17:1 18:1 Faculdade de Economia do Porto

  9. Exercícios • Veja as notas de informática • Quais os alunos que tiraram notas maiores do que 12 e a que disciplinas? • Calcule a média das notas • Calcule a média das notas de informática • Quantas notas maiores do que 12 houve a informática? • Qual a nota mais alta a matemática? • Quem tirou notas entre 12 e 16? Faculdade de Economia do Porto

  10. Matrizes • Servem para guardar dados em duas dimensões. • Exemplo: guardar vendas de 4 produtos (p1, p2, p3, p4) em 2 lojas diferentes (loja1, loja2) • matriz de 2 linhas (lojas) e 4 colunas (produtos) > m <- matrix(c(23,54,12,56,76,23,34,15), 2, 4) > m [,1] [,2] [,3] [,4] [1,] 23 12 76 34 [2,] 54 56 23 15 • Os elementos do vector c(…) são dispostos por coluna. • podem ser dispostos por linha opcionalmente (fazer help(matrix)) • Todos os elementos da matriz são do mesmo tipo • Uma matriz pode ser vista como um vector com duas dimensões. Faculdade de Economia do Porto

  11. Matrizes Se quiser preencher os valores em linha, pode acrescentar byrow=T: m <- matrix(c(23,12,76,34, 54,56,23,15), 2, 4, byrow=T) > m [,1] [,2] [,3] [,4] [1,] 23 12 76 34 [2,] 54 56 23 15 Existe uma maneira fácil de introduzir os dados de uma matriz: m1 <- matrix(,2,4) data.entry(m1) Note que a função data.entry já faz a atribuição de valores à matriz m1) Faculdade de Economia do Porto

  12. Matrizes • Usamos índices de forma semelhante aos vectores. • Exemplo: quais foram as vendas na loja2, produto p3? • queremos o elemento da matriz na linha 2, coluna 3 > m[2,3] [1] 23 • Todas as vendas da loja1 (o resultado é um vector) > m[1, ] [1] 23 12 76 34 • Todas as vendas do produto p3 (o resultado é um vector) > m[ ,3] [1] 76 23 Faculdade de Economia do Porto

  13. Nomes de linhas e colunas • Podemos dar nomes às linhas e às colunas. > colnames(m) <- c('p1','p2','p3','p4') > rownames(m) <- c('loja1','loja2') > m p1 p2 p3 p4 loja1 23 12 76 34 loja2 54 56 23 15 • E usar os nomes nos índices. > m['loja2','p3'] [1] 23 Faculdade de Economia do Porto

  14. Multiplicação de Matrizes Operação rep(1, 6) gera uma sequência de 1’s (repetição 6 vezes) > rep(1, 6) 1 1 1 1 1 1 • Para obtermos a multiplicação de matrizes, usamos %*%: Exemplo: > m1 <- matrix(rep(1,6), 2,3) > m1 [,1] [,2] [,3] [1,] 1 1 1 [2,] 1 1 1 > m2 <- matrix(rep(1,6), 3,2) > m2 [,1] [,2] [1,] 1 1 [2,] 1 1 [3,] 1 1 m1 %*% m2% multiplicação de matrizes, [,1] [,2] [1,] 3 3 [2,] 3 3 Faculdade de Economia do Porto

  15. Outras operações com matrizes > m1 [,1] [,2] [,3] [1,] 1 1 1 [2,] 1 1 1 Transposição da matriz m1 > t(m1) [,1] [,2] [1,] 1 1 [2,] 1 1 [3,] 1 1 Determinante > m3 <- martix(c(34,-23,43,5),2,2) > det(m3) > 1159 Matriz inversa de uma matriz quadrada > solve(m3) [,1] [,2] [1,] 0.004314064 -0.03710096 [2,] 0.019844694 0.02933563 Faculdade de Economia do Porto

  16. Exemplo: sistemas de equações lineares • A função solve() também pode ser usada para resolver sistemas de equações lineares: • Exemplo: > coefs <- matrix(c(-4,54.3,0.3,-4),2,2) > colnames(coefs) <- c('x','y') > rownames(coefs) <- c('eq1','eq2') > coefs x y eq1 -4.0 0.3 eq2 54.3 -4.0 > ys <- c(12.3,45) > solve(coefs,ys) x y 216.2069 2923.7586 Faculdade de Economia do Porto

  17. Exercícios sobre matrizes • Suponha que pretende guardar as vendas nos 12 meses do último ano das 2 sucursais de uma empresa. Escolha o objecto do R apropriado e tire partido das potencialidades do R para facilitar o acesso a esta informação. • Qual o total global das vendas? • Qual o valor médio de vendas por cada mês e cada loja? • Como saber qual o volume de vendas médio de cada sucursal ao longo do ano? (use apply) • Construa um gráfico de barras com as vendas de uma das sucursais ao longo do ano. • A função cbind(matriz, coluna) permite acrescentar colunas a uma matriz, desde que tenham o número certo de elementos. Acrescente à matriz que criou os dados de vendas de uma terceira sucursal. Faculdade de Economia do Porto

  18. Respostas Suponha que pretende guardar as vendas nos meses do último ano das 2 sucursais de uma empresa. Escolha o objecto do R apropriado e tire partido das potencialidades do R para facilitar o acesso a esta informação. > vendas <- matrix(c(23,43,54,23,53,43,54,65,76,34,65,34,546,67, + 35,45,56,57,34,34,46,56,57,678),2,12) > colnames(vendas) <- c('Jan','Fev','Mar','Abr','Mai','Jun','Jul', + 'Ago','Set','Out','Nov','Dez') > rownames(vendas) <- c('Braga','Faro') Qual o total global de vendas? > sum(vendas) Como saber qual o volume de vendas médio de cada loja ao longo do ano? > mean(vendas['Braga',]) > mean(vendas['Faro',]) Experimente esta alternativa: > apply(vendas,1,mean) tente também > apply(vendas,2,mean) Construa um gráfico de barras com as vendas de uma das sucursais ao longo do ano. > barplot(vendas['Braga',],main='Vendas em Braga', + ylab='Volume de Vendas') Faculdade de Economia do Porto

  19. Importar conjuntos de dados • R lê o formato “universal” csv (comma separated values) > d <- read.csv('internet.txt') Antes de usarmos o read.csv, devemos indicar ao R qual é a pasta (directório) de trabalho. pais,servico,ano,subscritores Bélgica,ADSL,1999,1000 Dinamarca,ADSL,1999,800 Suécia,ADSL,1999,0 P. Baixos,ADSL,1999,0 Áustria,ADSL,1999,900 Finlândia,ADSL,1999,0 Alemanha,ADSL,1999,5000 Espanha,ADSL,1999,1848 .... Faculdade de Economia do Porto

  20. Exportar dados … • do Excel • save as csv • alguns problemas: separador (;), caracteres com acentos… • para o Access • criar tabela com importação de dados (insert table) • do Access • export table (menu File) • ODBC (Open DB Connectivity) • standard que permite ligar “qualquer” programa a “qualquer” BD relacional. • O R tem um package ROBDC Faculdade de Economia do Porto

  21. Exercícios • Obtenha os dados sobre a subscrição de banda larga na UE. • Utilize a função summary sobre o data frame correspondente. • Qual o número de subscritores de banda larga da UE em 2002? • E qual é esse número apenas para o serviço “ADSL”? (sugestão: use attach(dataframe) para poder referir-se às colunas de forma mais sucinta. • Em que país, em que serviço e em que ano se registou o valor mais alto de subscritores? (use which.max) • Qual a evolução do serviço “CABO” em Portugal nos anos em estudo? (filtre o dataset para as condições indicadas, faça um barplot) • Estude a evolução relativa dos dois serviços em Portugal, de 1999 a 2002, construindo um gráfico (com plot), com um dos serviços no eixo do x e o outro no eixo dos y. • Em que país houve o maior crescimento relativo em 2002, para o serviço “ADSL”? E para o serviço CABO? sugestão: calcule o quociente entre dois vectores com o número de subscritores, veja qual o índice do máximo, e obtenha o nome do país com esse índice. • Qual o país onde houve um maior crescimento relativo global em 2002? Faculdade de Economia do Porto

  22. Importação de dados Excel Exercício com dados de investimento Buscar a folha de Excel “Investimento_em_Portugal.xls” no Moodle Usar Excel para gerar um ficheiro “Investimento_em_Portugal.csv” No R, buscar os dados usando invest.port <- read.csv(“Investimento_em_Portugal.csv”,sep=“;”) 1. Calcular as médias dos investimentos para cada país e para os anos 2001 e 2002. 2. Calcular as médias de investimento para Alemanha e Espanha para 2002 e decidir qual era maior. 3. Elaborar um gráfico que mostra a evolução mensal de investimento para Alemanha. Faculdade de Economia do Porto

  23. Importação de dados de Access Exercício com dados sobre notas Buscar a base de dados do Access “Alunos.mdb” no Moodle Construir no Access um consulta que una os dados das tabelas Alunos, Notas e Disciplinas e que mostre os campos cod_aluno, nome, disciplina e nota Exportar a consulta para um ficheiro com o nome “notas_de_alunos.csv” (não esquecer de indicar include field names on first row) No R, buscar os dados usando notas <- read.csv(“notas_de_alunos.csv”,sep=“;”) 1. Calcular a média da disciplina “Microeconomia” 2. Calcular as médias do aluno “Artur Filipe Barroso” e da “Sofia Marta Carvalho” e decidir sobre qual o melhor. 3. Elaborar um histograma que reflita a distribuição das notas da disciplina de “Microeconomia” Faculdade de Economia do Porto