Análise de Dados - Rachid Muleiadr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo...

Preview:

Citation preview

Análise de Dados

dr. Rachid Muleia, Msc. in Statistics

Universidade Eduardo MondlaneFaculdade de Ciências

Departamento de Matemática e Informática

Julho - Novembro 2019

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 1 / 66

Avaliação da qualidade de dados (DQA)

O objectivo primário é determinar se uma decisão ou estimativa podeser feita com o nível de certeza desejado, dado a qualidade dos dados

Verificar a adequação das variáveis de interesse.

Verificar a adequação dos instrumentos de medição.

Suficiência da amostra para detectar um efeito com significânciaprática caso esteja presente.

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 2 / 66

Revisão de dadosDurante o processo de revisão de dados é preciso inspeccionar os dados nasua totalidade, gerando uma série de estatísticas sumárias e visualizaçõesgráficas.

Calcular o mínimo e máximo para todas as variáveis, e comparar-oscom os intervalos predeterminados.

Eliminar duplicados da base de dados.

verificar se os dados foram colhidos na unidade de medida correcta.

calcular a correlação serial para verificar se as observações sãoindependentes umas das outra (correlação entre a variável e os seusvalores defasados)

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 3 / 66

O que é R?

Uma linguagem de programação.

Software para análises estatísticas e visualização de dados.

Open source não precisa de gastar algum centavo

Está disponível para os sistemas operativos: Linux, Mac e Windows.

Pode ser baixado a partir do repositório CRAN ou The R Project forStatistical Computing

Recomendo que também instale o RStudio, um editor que ajuda naaprendizagem e garante maior produtividade.

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 4 / 66

Por que usar R?

Actualmente é uma das liguangens de programação com maiorpopularidade.

R é bastante recomendável para Data Science.

Tem uma imensidão de recursos para aprendizagem.

Muita gente empenhada no desenvolvimento do R

A comunidade de usuários de R é bastante grande. CheckStackoverflow R“Melhor software para visualização de dados.”Desenvolvimento de aplicações webs, vulgarmente conhecidas porShiny App

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 5 / 66

Instalação e Inicialização

O processo de instalação é similar ao de qualquer programa.

O ficheiro é executavel, então é só clicar duas vezes e seguir asinstruçõesApós a instalação o programa pode ser incializado indo ao Sart Menu eprocurar pelo icon:

Para maior desempenho na aprendizagem recomendo que use o Rstudio(preferência pessoal). Existem outros editores. . .

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 6 / 66

Operadores aritiméticos

O R também pode ser usado como calculadora.

x + y #adiçãox - y #subtraçãox * y #multiplicaçãox / y #divisãox ^ y #exponenciaçãox %% y #modulus(resto da divisão)x %/% y #divisão inteira

Para além de operações artiméticas, o R pode fazer operações matemáticascomplexas. [Vide documentação] emhttps://stat.ethz.ch/R-manual/R-devel/library/base/html/Trig.html

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 7 / 66

Tipo de Dados e Estrutura de Dados

Tipo de dadosLogical (TRUE e FALSE)Interger (número inteiro) ex: 1L,2L,3L. . .Numeric (número real) ex: 2.0, 4.7,. . .character (carácter/string) ex: " Global“.

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 8 / 66

Estrutura de dados

Vectors (vectores)Lists (listas)Matrix (matrizes)ArrayDataframe

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 9 / 66

vectorapple <- c('red','green',"yellow")print(apple)

## [1] "red" "green" "yellow"

#elementos do vector podem ser acedidos usando []apple[1]

## [1] "red"

apple[2]

## [1] "green"

apple[c(1,3)]

## [1] "red" "yellow"

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 10 / 66

Listas

# Criacao de lista.list1<-list(c(2,5,3),21.3,sin)# imprimir a lista.print(list1)

## [[1]]## [1] 2 5 3#### [[2]]## [1] 21.3#### [[3]]## function (x) .Primitive("sin")

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 11 / 66

Matrizes

Uma matriz é um conjunto de dados retangular bidimensional. A funçãomatrix() recebe um vector.# Criacao da matriz.M = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = TRUE)print(M)

## [,1] [,2] [,3]## [1,] "a" "a" "b"## [2,] "c" "b" "a"

# Os valores da matriz podem ser acedidos usando [,]M[1,3]; M[1,1:3]

## [1] "b"

## [1] "a" "a" "b"

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 12 / 66

Matrizes (um pouco mais)

Y=matrix(1:12, nrow = 3, ncol = 4)Y

## [,1] [,2] [,3] [,4]## [1,] 1 4 7 10## [2,] 2 5 8 11## [3,] 3 6 9 12

Y[1, 3]; Y[1, ]; Y[, 2]

## [1] 7

## [1] 1 4 7 10

## [1] 4 5 6

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 13 / 66

Data frame

Um objecto data.frame em R tem propriedades dimensionais semelhantes auma matriz, mas pode conter dados categóricos, além de numéricos. Umamatriz só pode levar dados do mesmo tipo.

Uma data frame pode ser criada usando a função data.frame().

nomes=c("Edson", "Eudson","Euclides", "Freid")idade=c(30,35,32,34)residencia=c('Zimpeto','Liberdade','Alto-Mae', "Polana")#data framedados_trab=data.frame(nomes, idade, residencia, stringsAsFactors=FALSE)#inspeccionarhead(dados_trab)

## nomes idade residencia## 1 Edson 30 Zimpeto## 2 Eudson 35 Liberdade## 3 Euclides 32 Alto-Mae## 4 Freid 34 Polana

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 14 / 66

dim(dados_trab) #dimensão da base de dados.

## [1] 4 3

names(dados_trab) # nome das variáveis.

## [1] "nomes" "idade" "residencia"

str(dados_trab) # estrutura da base de dados.

## 'data.frame': 4 obs. of 3 variables:## $ nomes : chr "Edson" "Eudson" "Euclides" "Freid"## $ idade : num 30 35 32 34## $ residencia: chr "Zimpeto" "Liberdade" "Alto-Mae" "Polana"

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 15 / 66

Como aceder aos elementos da Data Frame?Os elementos de uma data frame podem ser acedidos da mesma formacomo elementos de uma lista ou matriz.

Acedendo como lista:

Pode-se usar os seguintes operados, [ , [[ or $ para aceder as colunas.

dados_trab['nomes']

## nomes## 1 Edson## 2 Eudson## 3 Euclides## 4 Freid

dados_trab$nomes

## [1] "Edson" "Eudson" "Euclides" "Freid"dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 16 / 66

dados_trab[['nomes']]

## [1] "Edson" "Eudson" "Euclides" "Freid"

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 17 / 66

Aceder como uma matriz.

dados_trab[1:3,] #seleccione as três primeiras linhas.

## nomes idade residencia## 1 Edson 30 Zimpeto## 2 Eudson 35 Liberdade## 3 Euclides 32 Alto-Mae

dados_trab[dados_trab$idade<34,] #seleccione os que tem idade inferior a 35.

## nomes idade residencia## 1 Edson 30 Zimpeto## 3 Euclides 32 Alto-Mae

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 18 / 66

dados_trab[,2:3] #seleccione a segunda e a terceira coluna.

## idade residencia## 1 30 Zimpeto## 2 35 Liberdade## 3 32 Alto-Mae## 4 34 Polana

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 19 / 66

Modificar elementos da Data Frame (observações).

dados_trab[1, 'idade']=35dados_trab

## nomes idade residencia## 1 Edson 35 Zimpeto## 2 Eudson 35 Liberdade## 3 Euclides 32 Alto-Mae## 4 Freid 34 Polana

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 20 / 66

R tem um editor de dados, no estilo de planilha, que pode ser usado parainserir os dados.

newdata=edit(data.frame())dados_trab=edit(dados_trab)

O R não foi concebido para inserção de dados.Dados são geralmente armazenados em ficheiros .txt, .csv,.xlsx, .dat, ...O R tem várias funções para ler vários ficheiros. A função mãe éread.table()

path="C:/Users/Rachid/Box Sync/My Box Docs/Analise de dados em R/Introducao"carros=read.table(paste(path,"cars.csv",sep='/'),

sep=',',header=TRUE)

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 21 / 66

O R não só pode ler dados armazenados localmente, mas também pode lerdados a partir da internet.

data=read.table("http://www.sthda.com/upload/decathlon.txt",sep='\t', header=TRUE)

head(data)

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 22 / 66

Usar uma url na função read.table() não é aconselhável, pois nãoé “reprodutível”.

O ideal é baixar os dados e ler-os localmente.

A partir do R é possível baixar dados/ficheiros online usando a funçãodownload.file()

# baixar um ficheiro .txtdownload.file("http://www.sthda.com/upload/decathlon.txt",destfile=paste(path,"decathlon.txt",sep='/'))

A função download.file(), não só pode ser usada para baixarficheiros .txt.

download.file("http://www2.ntia.doc.gov/files/broadband-data/AK-NBM-CSV-Dec-2012.zip",destfile=paste(path,"AK-NBM-CSV-Dec-2012.zip",sep="/"))

unzip("AK-NBM-CSV-Dec-2012.zip")data = read.delim(paste(path,"AK-NBM-Wireless-CSV-DEC-2012.TXT",sep="/"), sep = "|")

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 23 / 66

Exportação de Dados

O R permite exportar/gravar dados em vários formatos.

Um dos formatos mais populares é o .csv, mas usuário está livre deexportar para o formato que lhe convem.

Para exportação de dados usa-se a função write.table()

write.table(dados_trab, file=paste(path, "dados_trab.csv",sep="/"), sep=",",row.names=FALSE)

A função write.table() é mais genérica. Existem função maisespecíficas, como write.csv()

write.csv() grava/exporta um ficheiro no formato .csv.

write.csv(dados_trab, file=paste(path, "dados_trab_1.csv",sep='/'))

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 24 / 66

Um pouco mais sobre Import/Export (Dados)

As funções read.table() e write.table() são funções internas comalgumas litimações.

Há ficheiros que não é possível ler/ gravar com estas funções.

Por ex, ficheiros em formato .xlsx não podem ser lidos usando afunção read.table()

#install.packages("openxlsx")library(openxlsx)example_xlsx=openxlsx::read.xlsx(xlsxFile = paste(path,

"data_example.xlsx", sep="/"))head(example_xlsx)

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 25 / 66

A função read.xlsx() permite também especificar a planilha de dados quese pretende ler usando o argumento sheet.

O argumento sheet pode ser o nome da panilha, em aspas, ou o nr daplanilha.

library(openxlsx)example_xlsx_1=openxlsx::read.xlsx(xlsxFile = paste(path, "data_example.xlsx"

, sep="/"),sheet=2)dim(example_xlsx)dim(example_xlsx_1)

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 26 / 66

Importação de ficheiros SPSS, SAS e STATAO R oferece recursos para leitura de ficheiros SPSS, SAS e STATA, a partirda livraria foreign.Caso a livraria foreign não esteja instalada, pode-se instalar usando ocondamando install.packages('foreign').#install.packages("foreign")library(foreign)#leitura de ficheiro SPSSbasedados=read.spss('C:/Users/lucp8943/Dropbox/Analise de Dados DMI/Slides Aulas/MZAR72FL.SAV',

to.data.frame=TRUE)

## re-encoding from UTF-8

## Warning in read.spss("C:/Users/lucp8943/Dropbox/Analise de Dados DMI/## Slides Aulas/MZAR72FL.SAV", : Undeclared level(s) 577, 624, 643, 651, 669,## 714, 739, 745, 746, 760, 763, 779, 800, 808, 810, 834, 852, 858, 859, 889,## 901, 914, 927, 934, 940, 954, 960, 967, 969, 974, 981, 985, 1002, 1009,## 1019, 1024, 1031, 1036, 1067, 1076, 1080, 1083, 1091, 1099, 1117, 1119,## 1130, 1141, 1154, 1163, 1199, 1218, 1222, 1248, 1275, 1284, 1285, 1293,## 1302, 1326, 1360, 1368, 1378, 1394, 1401, 1407, 1417, 1427, 1448, 1458,## 1472, 1476, 1479, 1489, 1500, 1511, 1532, 1543, 1545, 1559, 1565, 1587,## 1595, 1599, 1611, 1622, 1633, 1643, 1656, 1668, 1692, 1704, 1711, 1716,## 1735, 1760, 1765, 1778, 1803, 1808, 1816, 1828, 1829, 1842, 1855, 1866,## 1881, 1935, 1949, 2005, 2033, 2048, 2062, 2107, 2121, 2137, 2167, 2182,## 2198, 2213, 2229, 2239, 2283, 2293, 2295, 2319, 2326, 2342, 2393, 2427,## 2444, 2461, 2479, 2500, 2514, 2532, 2547, 2587, 2597, 2642, 2679, 2698,## 2718, 2736, 2737, 2756, 2796, 2811, 2816, 2876, 2913, 2916, 2938, 2958,## 2962, 2979, 2980, 3001, 3013, 3022, 3043, 3055, 3065, 3086, 3087, 3109,## 3135, 3151, 3153, 3175, 3198, 3201, 3290, 3313, 3337, 3360, 3397, 3408,## 3422, 3457, 3506, 3581, 3585, 3607, 3658, 3676, 3684, 3688, 3710, 3723,## 3737, 3752, 3763, 3790, 3817, 3869, 3883, 3899, 3909, 3926, 3954, 3977,## 3989, 4039, 4068, 4097, 4115, 4123, 4155, 4214, 4244, 4291, 4347, 4366,## 4397, 4460, 4463, 4491, 4523, 4555, 4588, 4592, 4612, 4618, 4649, 4653,## 4675, 4686, 4719, 4787, 4853, 4855, 4889, 4923, 4924, 4994, 5030, 5065,## 5124, 5172, 5248, 5285, 5360, 5376, 5398, 5437, 5475, 5514, 5553, 5567,## 5593, 5633, 5677, 5679, 5696, 5753, 5794, 5877, 5919, 5948, 5961, 6003,## 6046, 6132, 6175, 6191, 6219, 6308, 6316, 6353, 6443, 6489, 6535, 6581,## 6628, 6675, 6723, 6770, 6818, 6867, 6880, 6911, 6916, 6933, 6965, 6980,## 7026, 7064, 7114, 7165, 7211, 7264, 7267, 7318, 7370, 7423, 7528, 7657,## 7690, 7744, 7799, 7902, 7911, 7967, 8054, 8080, 8138, 8254, 8312, 8335,## 8450, 8491, 8508, 8551, 8612, 8859, 8865, 8872, 8922, 8985, 8987, 9049,## 9113, 9178, 9204, 9309, 9375, 9441, 9494, 9508, 9576, 9644, 9712, 9851,## 9991, 10093, 10206, 10278, 10351, 10499, 10573, 10724, 10800, 10907, 10954,## 11032, 11110, 11197, 11348, 11429, 11510, 11581, 11592, 11674, 11757,## 11841, 11925, 12009, 12180, 12267, 12354, 12402, 12442, 12530, 12619,## 12629, 12659, 12799, 12981, 13166, 13260, 13544, 13641, 13737, 13835,## 13933, 14032, 14132, 14223, 14333, 14435, 14537, 14618, 14641, 14849,## 14918, 14955, 15061, 15118, 15128, 15276, 15321, 15424, 15442, 15493,## 15548, 15603, 15655, 15763, 15938, 16059, 16165, 16181, 16280, 16377,## 16512, 16537, 16819, 16866, 16986, 17228, 17350, 17474, 17598, 17723,## 17849, 17975, 18103, 18202, 18231, 18361, 18447, 18491, 18708, 18755,## 18888, 19022, 19157, 19360, 19430, 19493, 19707, 19847, 19868, 19988,## 20130, 20134, 20417, 20451, 20562, 20708, 20855, 21152, 21302, 21309,## 21454, 21455, 21569, 21606, 22069, 22384, 22486, 22543, 22864, 22977,## 23004, 23027, 23190, 23355, 23521, 23688, 23856, 24025, 24103, 24106,## 24196, 24368, 24541, 24715, 24754, 24890, 25067, 25245, 25254, 25605,## 25787, 25970, 26109, 26154, 26340, 26527, 26715, 26905, 26994, 27289,## 27678, 27874, 28095, 28271, 28415, 28472, 28674, 28807, 28878, 29046,## 29083, 29289, 29497, 29707, 30130, 30231, 30344, 30560, 30748, 30777,## 31048, 31437, 31660, 31885, 32111, 32569, 32800, 33033, 33268, 33504,## 33742, 33857, 33982, 34223, 34466, 34711, 34957, 35205, 35238, 35240,## 35455, 35707, 35961, 36190, 36216, 36732, 37520, 37787, 38325, 38683,## 39202, 39705, 39987, 39993, 40271, 40801, 40845, 42183, 42280, 42316,## 42749, 42919, 43531, 43612, 43840, 44151, 45099, 46066, 46393, 46723,## 46929, 47389, 47558, 48064, 48490, 48749, 49095, 49444, 49497, 49795,## 50148, 50504, 50835, 50863, 51224, 51588, 51954, 52557, 52695, 53371,## 53446, 53618, 53825, 53976, 54208, 54592, 54980, 55805, 56554, 56932,## 56960, 57365, 57695, 57772, 58081, 58182, 58595, 59430, 59650, 59852,## 60705, 61136, 61671, 62008, 62892, 62916, 63788, 64241, 65047, 65156,## 65619, 66002, 66085, 66554, 67027, 67503, 68465, 68609, 69067, 69441,## 69934, 70430, 70930, 71407, 71434, 71941, 72365, 72849, 73485, 74007,## 74532, 74816, 75061, 75594, 76131, 76327, 77764, 78317, 78388, 78872,## 78873, 79433, 79440, 80506, 80565, 81137, 81173, 81621, 81713, 82182,## 82878, 84059, 84656, 84913, 85862, 86472, 87086, 89586, 90863, 91508,## 92158, 92596, 93471, 94135, 96155, 97525, 98218, 98915, 101755, 103938,## 104395, 104676, 105419, 107215, 108445, 109991, 110772, 111099, 113148,## 113952, 114761, 115576, 117223, 118484, 120588, 122307, 123175, 124050,## 124931, 125818, 127495, 127611, 130069, 131275, 132207, 133582, 134091,## 135374, 136002, 138920, 141900, 142786, 142908, 143923, 144701, 144945,## 148054, 149106, 150165, 150603, 151231, 152262, 152305, 155572, 156677,## 157790, 158910, 159911, 160038, 161175, 164230, 165802, 166433, 166979,## 167546, 168165, 170561, 170929, 174221, 180287, 184367, 185676, 189660,## 191007, 192363, 193729, 196490, 196600, 203260, 212394, 216951, 218717,## 221606, 223179, 239543, 242957, 244295, 248169, 251706, 253494, 260771,## 264487, 267112, 277917, 293228, 296191, 307228, 317909, 325758, 335026,## 338812, 339521, 343641, 382120, 390318, 393089, 401523, 404374, 411892,## 421911, 437105, 456062, 478117, 492977, 532879, 567128, 584222, 647970,## 717288, 732677, 737880, 769881, 775348, 814718, 1210859, 1261610, 3081240,## 3574851 added in variable: SVIRAL

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 27 / 66

Para além da livraria ‘foreign‘, pode-se usar a livraria ‘haven‘ para osmesmos fins.

A livraria ‘haven‘ pode ser facilmente instalada usando o comando‘install.packages(’haven’)‘.

A livraria ‘haven‘ é mais recomendada e preferida para leitura deficheiros SPSS. Além ficheiros SPSS, pode ler ficheiros SAS e STATA.

#install.packages('haven')library(haven)basedados_1=read_spss('C:/Users/lucp8943/Dropbox/Analise de Dados DMI/Slides Aulas/MZAR72FL.SAV')

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 28 / 66

Como podem ver, read_spss devolve uma tibble. Caso queira converterpara uma data frame, é só usar o comando as.data.frame().

basedados_convr=as.data.frame(basedados_1)head(basedados_convr)

## HIVCLUST HIVNUMB HIVLINE HIV01 HIV02 HIV03 HIV05 HIV06 HIV07 HIV08## 1 1 2 1 K8L2G 6918 0 1725733 0 NA NA## 2 1 2 2 H4B4Q 6881 0 1735684 0 NA NA## 3 1 11 2 P2E5B 6950 0 1725733 0 NA NA## 4 1 12 2 G0P7D 6897 0 1725733 0 NA NA## 5 1 12 1 G8P6K 6851 0 1735684 1 0 0## 6 1 12 6 M0R9N 2749 0 1708158 NA 0 NA## HIV09 SHIV50 SLAGRECN SVIRAL SBIOARV SLAGE## 1 NA NA NA NA NA 1## 2 NA NA NA NA NA 1## 3 NA NA NA NA NA 1## 4 NA NA NA NA NA 1## 5 NA NA NA NA NA 1## 6 NA NA NA NA NA 3dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 29 / 66

O comando read_spss(), da livraria haven, permite aceder facilmente aslabels dos nomes das variáveis.

attr(basedados_1[['HIV03']],which='label')

## [1] "Blood test result"

attr(basedados_1[['HIVNUMB']],which='label')

## [1] "Household"

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 30 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Manipulação de dados

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 31 / 66

Objectivos

No final deste capítulo, os estudantes deverão saber:

Organizar os dados no formato desejável;

Criar novas variávies;

Filtrar linhas e seleccionar colunas;

Juntar várias bases de dados numa só base (merge);

Usar algumas funções da livraria dplyr para manipular dados;

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 32 / 66

Para ilustração de várias funiconalide de manipulação de dados , vamos usara base de dados mtcars.

Suponha que queira aceder as primeiras 10 linhas da base.

data("mtcars")mtcars[1:10, ]

## mpg cyl disp hp drat wt qsec vs am gear carb## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 33 / 66

Pode-se também aceder algumas linhas especificas, por exemplo, suponhaque esteja interessado nas linhas 1,3,12,20.

mtcars[c(1,3,12,30),]

## mpg cyl disp hp drat wt qsec vs am gear carb## Mazda RX4 21.0 6 160.0 110 3.90 2.62 16.46 0 1 4 4## Datsun 710 22.8 4 108.0 93 3.85 2.32 18.61 1 1 4 1## Merc 450SE 16.4 8 275.8 180 3.07 4.07 17.40 0 0 3 3## Ferrari Dino 19.7 6 145.0 175 3.62 2.77 15.50 0 1 5 6

As primeiras 10 linhas podem ser armazenadas numa variável para usofuturo.

prim_10=mtcars[1:10, ]

Por vezes, o interesse é verificar linhas para a qual uma dada coluna contemum valor y. Por ex, podemos estar interessado em saber, quais os carroscom quatro velocidades. A variável que nos dá informação sobre velocidadesé gear

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 34 / 66

mtcars[mtcars$gear==4,]

## mpg cyl disp hp drat wt qsec vs am gear carb## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 35 / 66

Caso o interesse seja conhecer as viaturas com 4 velocidades e 2carburadores, usaríamos as variáveis gear e carb para aceder essainformação.

mtcars[mtcars$gear==4 & mtcars$carb==2, ]

## mpg cyl disp hp drat wt qsec vs am gear carb## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 36 / 66

Ordenção

O R permite ordenar observações (linhas) de forma crescente e decrescente.O ordenamento é com base na função order().

#ordenar por mpgnova_base=mtcars[order(mtcars$mpg),]head(nova_base)

## mpg cyl disp hp drat wt qsec vs am gear carb## Cadillac Fleetwood 10.4 8 472 205 2.93 5.250 17.98 0 0 3 4## Lincoln Continental 10.4 8 460 215 3.00 5.424 17.82 0 0 3 4## Camaro Z28 13.3 8 350 245 3.73 3.840 15.41 0 0 3 4## Duster 360 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4## Chrysler Imperial 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4## Maserati Bora 15.0 8 301 335 3.54 3.570 14.60 0 1 5 8

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 37 / 66

Pode-se também ordenar usando mais de uma variável.

# Vamos ordenar os dados usando as variáveis mpg e cly

nova_base_1=mtcars[order(mtcars$mpg, mtcars$cyl),]head(nova_base_1)

## mpg cyl disp hp drat wt qsec vs am gear carb## Cadillac Fleetwood 10.4 8 472 205 2.93 5.250 17.98 0 0 3 4## Lincoln Continental 10.4 8 460 215 3.00 5.424 17.82 0 0 3 4## Camaro Z28 13.3 8 350 245 3.73 3.840 15.41 0 0 3 4## Duster 360 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4## Chrysler Imperial 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4## Maserati Bora 15.0 8 301 335 3.54 3.570 14.60 0 1 5 8

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 38 / 66

Caso queira ordenar por ordem decrescente, basta preceder a variável pelosinal menos(-)

base_descr=mtcars[order(-mtcars$mpg),]head(base_descr)

## mpg cyl disp hp drat wt qsec vs am gear carb## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 39 / 66

Selecção de variáveisO R também permite fazer selecção de variáveis. Este procedimento éimportante quando se pretende trabalhar com um número reduzido devariáveis.

#suponha que queira apenas trabalhar com as variáveis mpg, cyl, drat

cols=c('mpg','cyl','drat') # criacao de vector com as variáveis desejadas.sel=mtcars[, cols]head(sel)

## mpg cyl drat## Mazda RX4 21.0 6 3.90## Mazda RX4 Wag 21.0 6 3.90## Datsun 710 22.8 4 3.85## Hornet 4 Drive 21.4 6 3.08## Hornet Sportabout 18.7 8 3.15## Valiant 18.1 6 2.76

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 40 / 66

Para além de usar os nomes das variáveis, pode-se usar o número da colunade cada variável para seleccionar as varíaveis de interesse.

sel_num=mtcars[, c(1,2,3,10)]head(sel_num)

## mpg cyl disp gear## Mazda RX4 21.0 6 160 4## Mazda RX4 Wag 21.0 6 160 4## Datsun 710 22.8 4 108 4## Hornet 4 Drive 21.4 6 258 3## Hornet Sportabout 18.7 8 360 3## Valiant 18.1 6 225 3

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 41 / 66

Exclusão de variáveis.

del_var=mtcars[,c(-3,-5,-9)]head(del_var)

## mpg cyl hp wt qsec vs gear carb## Mazda RX4 21.0 6 110 2.620 16.46 0 4 4## Mazda RX4 Wag 21.0 6 110 2.875 17.02 0 4 4## Datsun 710 22.8 4 93 2.320 18.61 1 4 1## Hornet 4 Drive 21.4 6 110 3.215 19.44 1 3 1## Hornet Sportabout 18.7 8 175 3.440 17.02 0 3 2## Valiant 18.1 6 105 3.460 20.22 1 3 1

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 42 / 66

O procedimento anterior deixa a base de dados original intacta. Mas casoqueira remover(apagar) por definitivo uma determinada variável (que épouco recomendado) pode-se fazer da seguinte maneira:

#vamos apagar a variável mpg da base de dados.4mtcars$mpg=NULLhead(mtcars)

## cyl disp hp drat wt qsec vs am gear carb## Mazda RX4 6 160 110 3.90 2.620 16.46 0 1 4 4## Mazda RX4 Wag 6 160 110 3.90 2.875 17.02 0 1 4 4## Datsun 710 4 108 93 3.85 2.320 18.61 1 1 4 1## Hornet 4 Drive 6 258 110 3.08 3.215 19.44 1 0 3 1## Hornet Sportabout 8 360 175 3.15 3.440 17.02 0 0 3 2## Valiant 6 225 105 2.76 3.460 20.22 1 0 3 1

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 43 / 66

Filtro e seleçcão de colunas em simultâneoAté aqui vimos como fazer filtros e seleccionar colunas de formas separadas.Pode-se muito bem fazer os dois procedimentos em simultâneo.

#viaturas com mais de 4 cilindros (apresentar penas a coluna 8 e 9)data(mtcars)mtcars[mtcars$cyl>4, c(8,9)]

## vs am## Mazda RX4 0 1## Mazda RX4 Wag 0 1## Hornet 4 Drive 1 0## Hornet Sportabout 0 0## Valiant 1 0## Duster 360 0 0## Merc 280 1 0## Merc 280C 1 0## Merc 450SE 0 0## Merc 450SL 0 0## Merc 450SLC 0 0## Cadillac Fleetwood 0 0## Lincoln Continental 0 0## Chrysler Imperial 0 0## Dodge Challenger 0 0## AMC Javelin 0 0## Camaro Z28 0 0## Pontiac Firebird 0 0## Ford Pantera L 0 1## Ferrari Dino 0 1## Maserati Bora 0 1

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 44 / 66

Combinação de base de dados

Para a combinação de dados iremos usar as seguintes funções:

rbind() para juntar linhas;

cbind() para juntar colunas;

merge() para juntar bases de dados com base numa chave deidentificação;

Algumas funções da livraria dplyr para junção de base de dados;

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 45 / 66

rbind()

A função rbind() retorna a junção de linhas de duas bases de dados, quetêm mesmas variáveis (colunas).

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 46 / 66

data_1=data.frame(Name=c('Lenna','Malcom',"Akiko"),City=c("San Francisco","New York", "Tokyo"), Country=c("US","US","Japan"))

data_2=data.frame(Name=c("Lenna","Thomas","Diane"),City=c("San Franscico", "London", "Chicago"), Country=c("US","UK","US"))

data_1

## Name City Country## 1 Lenna San Francisco US## 2 Malcom New York US## 3 Akiko Tokyo Japan

data_2

## Name City Country## 1 Lenna San Franscico US## 2 Thomas London UK## 3 Diane Chicago US

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 47 / 66

data_new=rbind(data_1, data_2)data_new

## Name City Country## 1 Lenna San Francisco US## 2 Malcom New York US## 3 Akiko Tokyo Japan## 4 Lenna San Franscico US## 5 Thomas London UK## 6 Diane Chicago US

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 48 / 66

cbind()Retorna a junção de colunas de duas bases de dados, quando estas têm omesmo número de linhas.

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 49 / 66

data_3=data.frame(Age=c(14,16,17,18,19,20))data_3

## Age## 1 14## 2 16## 3 17## 4 18## 5 19## 6 20

data_4=cbind(data_new, data_3)data_4

## Name City Country Age## 1 Lenna San Francisco US 14## 2 Malcom New York US 16## 3 Akiko Tokyo Japan 17## 4 Lenna San Franscico US 18## 5 Thomas London UK 19## 6 Diane Chicago US 20

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 50 / 66

Merge/Join

Merge permite unir duas bases dados com base numa identificação(ID).

Existem vários tipos de merge: natural join, left join e right outer join

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 51 / 66

natural join/inner join

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 52 / 66

df1=data.frame(employee_ID=c(1,2,3,4,5),first_name=c("Jone","Daniel","Anne","George","Tim"),department_ID=c(10,20,10,20,10))

df2=data.frame(department_ID=c(10,20),department_name=c('sales', 'HR'))df_all=merge(df1,df2, by.x='department_ID',by.y='department_ID')df_all

## department_ID employee_ID first_name department_name## 1 10 1 Jone sales## 2 10 3 Anne sales## 3 10 5 Tim sales## 4 20 2 Daniel HR## 5 20 4 George HR

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 53 / 66

Left Join

Retorna todas as linhas da tabela da esquerda e todas as linhas com aschaves correspondentes da tabela da direita.

df1 = data.frame(CustomerId = c(1:6),Product = c(rep("Oven", 3), rep("Television", 3)))

df1

## CustomerId Product## 1 1 Oven## 2 2 Oven## 3 3 Oven## 4 4 Television## 5 5 Television## 6 6 Television

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 54 / 66

# data frame 2df2 = data.frame(CustomerId = c(2, 4, 6),

State = c(rep("California", 2), rep("Texas", 1)))df2

## CustomerId State## 1 2 California## 2 4 California## 3 6 Texas

df<-merge(x=df1,y=df2,by="CustomerId",all.x=TRUE)df

## CustomerId Product State## 1 1 Oven <NA>## 2 2 Oven California## 3 3 Oven <NA>## 4 4 Television California## 5 5 Television <NA>## 6 6 Television Texasdr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 55 / 66

Right outer join

Retorna todas as linhas da tabela da direita e todas as linhas com as chavescorrespondentes da tabela da esquerda.

df<-merge(x=df1,y=df2,by="CustomerId",all.y=TRUE)df

## CustomerId Product State## 1 2 Oven California## 2 4 Television California## 3 6 Television Texas

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 56 / 66

dplyr

Quase que todos os pacotes que implementam modelos estatísticosfuncionam em data frame.

Manipulação de dados usando "built-in function" exige maisprogramação do que análise de dados.

Com a criação do pacote “dplyr‘ o processo de manipulação de dadostornou-se muito mais fácil.

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 57 / 66

select()

# isntall.packages(dplyr)library(dplyr)iris %>% tbl_df %>% select(Petal.Width) %>% head(3)

## # A tibble: 3 x 1## Petal.Width## <dbl>## 1 0.2## 2 0.2## 3 0.2

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 58 / 66

Pode seleccionar, por exemplo, mais do que uma coluna.

# removi tbl_dfiris %>%

select(Petal.Width, Sepal.Length, Petal.Length) %>%head(3)

## Petal.Width Sepal.Length Petal.Length## 1 0.2 5.1 1.4## 2 0.2 4.9 1.4## 3 0.2 4.7 1.3

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 59 / 66

Existem várias formas de seleccionar colunas.

iris %>% tbl_df %>%select(starts_with("Petal")) %>% head(3)

## # A tibble: 3 x 2## Petal.Length Petal.Width## <dbl> <dbl>## 1 1.4 0.2## 2 1.4 0.2## 3 1.3 0.2

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 60 / 66

iris %>% tbl_df %>%select(ends_with("Width")) %>% head(3)## # A tibble: 3 × 2## Sepal.Width Petal.Width## <dbl> <dbl>## 1 3.5 0.2## 2 3.0 0.2## 3 3.2 0.2iris %>% tbl_df %>%select(contains("etal")) %>% head(3)## # A tibble: 3 × 2## Petal.Length Petal.Width## <dbl> <dbl>## 1 1.4 0.2## 2 1.4 0.2## 3 1.3 0.2

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 61 / 66

mutate()

A função mutate() permite adicionar uma coluna ao seu quadro de dados,especificando uma expressão de como calculá-la:

iris %>% tbl_df %>%mutate(Petal.Width.plus.Length = Petal.Width + Petal.Length) %>%select(Species, Petal.Width.plus.Length) %>%head(3)

## # A tibble: 3 x 2## Species Petal.Width.plus.Length## <fct> <dbl>## 1 setosa 1.60## 2 setosa 1.60## 3 setosa 1.5

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 62 / 66

arrange()Ordena uma base de dados com base numa variável.

iris %>% tbl_df %>%arrange(Sepal.Length)

## # A tibble: 150 x 5## Sepal.Length Sepal.Width Petal.Length Petal.Width Species## <dbl> <dbl> <dbl> <dbl> <fct>## 1 4.3 3 1.1 0.1 setosa## 2 4.4 2.9 1.4 0.2 setosa## 3 4.4 3 1.3 0.2 setosa## 4 4.4 3.2 1.3 0.2 setosa## 5 4.5 2.3 1.3 0.3 setosa## 6 4.6 3.1 1.5 0.2 setosa## 7 4.6 3.4 1.4 0.3 setosa## 8 4.6 3.6 1 0.2 setosa## 9 4.6 3.2 1.4 0.2 setosa## 10 4.7 3.2 1.3 0.2 setosa## # ... with 140 more rowsdr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 63 / 66

Por defeito ela ordena por odem crescente, mas pode-se ordenar por ordemdecrescente usandoa função desc()

iris %>% tbl_df %>%arrange(desc(Sepal.Length))

## # A tibble: 150 x 5## Sepal.Length Sepal.Width Petal.Length Petal.Width Species## <dbl> <dbl> <dbl> <dbl> <fct>## 1 7.9 3.8 6.4 2 virginica## 2 7.7 3.8 6.7 2.2 virginica## 3 7.7 2.6 6.9 2.3 virginica## 4 7.7 2.8 6.7 2 virginica## 5 7.7 3 6.1 2.3 virginica## 6 7.6 3 6.6 2.1 virginica## 7 7.4 2.8 6.1 1.9 virginica## 8 7.3 2.9 6.3 1.8 virginica## 9 7.2 3.6 6.1 2.5 virginica## 10 7.2 3.2 6 1.8 virginica## # ... with 140 more rowsdr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 64 / 66

filter()A função filter() permite selecionar linhas com base em expressõeslógicas. Você dá à função um predicado, especificando o que uma linhadeve satisfazer para ser incluída.

iris %>% tbl_df %>%filter(Sepal.Length > 5)

## # A tibble: 118 x 5## Sepal.Length Sepal.Width Petal.Length Petal.Width Species## <dbl> <dbl> <dbl> <dbl> <fct>## 1 5.1 3.5 1.4 0.2 setosa## 2 5.4 3.9 1.7 0.4 setosa## 3 5.4 3.7 1.5 0.2 setosa## 4 5.8 4 1.2 0.2 setosa## 5 5.7 4.4 1.5 0.4 setosa## 6 5.4 3.9 1.3 0.4 setosa## 7 5.1 3.5 1.4 0.3 setosa## 8 5.7 3.8 1.7 0.3 setosa## 9 5.1 3.8 1.5 0.3 setosa## 10 5.4 3.4 1.7 0.2 setosa## # ... with 108 more rows

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 65 / 66

Pode-se ter mais do que uma expressão lógica.

iris %>% tbl_df %>%filter(Sepal.Length > 5 & Species == "virginica") %>%select(Species, Sepal.Length) %>%head(3)

## # A tibble: 3 x 2## Species Sepal.Length## <fct> <dbl>## 1 virginica 6.3## 2 virginica 5.8## 3 virginica 7.1

dr. Rachid Muleia, Msc. in Statistics (Universidade Eduardo Mondlane Faculdade de Ciências Departamento de Matemática e Informática)Análise de Dados Julho - Novembro 2019 66 / 66

Recommended