data frames tabelas e matrizes n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Data Frames ( tabelas ) e Matrizes PowerPoint Presentation
Download Presentation
Data Frames ( tabelas ) e Matrizes

Loading in 2 Seconds...

play fullscreen
1 / 23

Data Frames ( tabelas ) e Matrizes - PowerPoint PPT Presentation


  • 127 Views
  • Uploaded on

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 ')

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Data Frames ( tabelas ) e Matrizes' - abel-kemp


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
data frames tabelas e matrizes
Data Frames (tabelas) e Matrizes

May2010

Faculdade de Economia do Porto

sum rio
Sumário
  • Data Frames (tabelas)
  • Matrizes
  • Importar dados para R

Faculdade de Economia do Porto

cria o de um data frame
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

prepara o f cil de data frame
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

data frames e matrizes
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

selec o de elementos de data frames
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

alterar elementos de data frames
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

algumas fun es teis
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

exerc cios
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

matrizes
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

matrizes1
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

matrizes2
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

nomes de linhas e colunas
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

multiplica o de matrizes
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

outras opera es com matrizes
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

exemplo sistemas de equa es lineares
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

exerc cios sobre matrizes
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

respostas
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

importar conjuntos de dados
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

exportar dados
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

exerc cios1
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

importa o de dados excel exerc cio com dados de investimento
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

importa o de dados de access exerc cio com dados sobre notas
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