-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathIntroducao a Analise de Dados R.R
365 lines (233 loc) · 9.74 KB
/
Introducao a Analise de Dados R.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
#################### IPEA #######################
##### Introducao à Analise de Dados usando R ####
########### Setembro / Outubro 2017 #############
########### Jony Arrais Pinto Junior ###########
## AULA 1 ##
## 19/09/2017 ##
# Criando um objeto chamado idade
Idade = c(20,35,34,28,30,31,27)
#Visualizando o objeto criado
Idade
# Calculando a média das idades
mean(Idade)
# Plotando o boxplot das idade
boxplot(Idade)
# Instalando o pacote vioplot
install.packages("vioplot")
packageDescription("vioplot")
installed.packages()
old.packages()
update.packages()
help(package = "vioplot")
help(package = "stats")
?vioplot
library("vioplot")
## AULA 2 ##
## 21/09/2017 ##
# Criando um vetor com as idades dos entrevistados
Idade = c(20,39,25,28,27,19,45,23,22)
# Visualizando o vetor Idade
Idade
#Criando um vetor com os nomes
# Se a palavra nao estiver escrito com aspas o R vai considerar como um objeto
Nome <- c("Jony", "Felipe", "Paulo", "Estevão", "Mayra","Helena","Priscila","Roberto","Daniel")
# Visualizando o vetor Nome
Nome
# Caso não soubesse a idade de um dos entrevistados (valores faltantes - missing - NA )
Idade = c(20,39,25,28,27,NA,45,23,22)
# Visualizando o vetor Idade
Idade
# Visualizando somente o quinto elemento do vetor Idade
# Usar colchetes e colocar a posicao (ou o intervalo ) do elemento
Idade[5]
# Visualizando do segundo ao sexto elemento do vetor Idade
Idade[2:6]
# Modificando o quinto valor do vetor Idade
Idade[5]=10
# Visualizando o vetor Idade
Idade
#Visualizando o valor máximo - funcao max
max(Idade)
# Nesse caso o valor maximo foi NA. Mas pq?
# Vamos buscar o help da funcao max
help (max)
# No help da funcao max, vemos que o argumento para NA = FALSE.
#Para excluir o NA, alteramos para na = TRUE
max(Idade, na.rm = TRUE)
## MATRIZES ##
# Funcao matrix #
# Criando uma matriz com 4 linhas e 2 colunas e que será alimentada por linha
A = matrix(c(2,3,4,19,4,5,5,9),ncol=2,nrow=4, dimnames=list(c("L1","L2","L3","L4"),c("C1","C2")))
#Visualizando a matriz A
A
# A matriz em regra e alimentada por colunas, isto e, os valores sao preenchidos por coluna.
# Mas posso inserir o argumento byrow e alimenta-la por linha
A = matrix(c(2,3,4,19,4,5,5,9),ncol=2,nrow=4, dimnames=list(c("L1","L2","L3","L4"),c("C1","C2")), byrow=TRUE)
#Visualizando a (nova) matriz A
A
#Comnhecendo a dimensão da matriz
dim(A)
#Acessando somente os elementos da segunda coluna
A[,2]
#Acessando somente os elementos da terceira linha
A[3,]
#Acessando somente o elemento da primeira coluna e da terceira linha
A[3,1]
## DATA FRAMES ##
# Criando um objeto data frame com 3 variáveis: sexo, idade e nome
base = data.frame(nome=c("João","Maria","Renato","Pedro","Jony","Helena","Bruno","Paulo","Marcelo","Ana"),sexo=c(2,1,2,2,2,1,2,2,2,1),idade=c(10,12,13,15,12,13,12,10,10,11),escolaridade=c(1,1,2,3,2,3,4,1,2,4))
#Visualizando o data frame base
base
#Visualizando somente as linhas iniciais
head(base)
#Visualizando somente as linhas finais
tail(base)
#Acessando somente a variável idade
#Nome do objeto onde se encontra $ nome do objeto que quero acessar
base$idade
#Descobrindo a estrutura de um objeto - tipos de variaveis
str(base)
## TIPOS DE DADOS ##
# A seguir apresentamos os tipos de dados usados com frequência no R
#para representar variáveis quantitativas e qualitativas.
#R tem 5 classes básicas:
#•logical (ex.., TRUE, FALSE) - LÓGICA
#•integer (ex.,, 2L, as.integer(3)) - QUANTITATIVA
#•numeric (real or decimal) (ex., 2, 2.0, pi) - QUANTITATIVA
#•complex (ex., 1 + 0i, 1 + 4i) - QUANTITATIVA
#•character (ex., “a”, “swc”) - QUALITATIVA ("factor")
# Verificando as classes dos objetos criados
class(Idade)
class(Nome)
class(A)
# DADOS LOGICOS #
# Verificando quais componentes de Idade são maiores do que 25
Idade>25
#Expressões lógicas são implementadas com os operadores lógicos:
# •<
# <
# menor que;
#•<=
# <=
# menor que ou igual a;
#•>
# >
# maior que;
#•>=
# >=
# maior que ou igual a;
#•==
# ==
# igual a;
#•!=
# !=
# diferente de.
#Operações importantes utilizando um dado do tipo lógico
Nome[Idade>25]
base[base$escolaridade!=1,]
## FATORES ##
# A variavel "sexo" esta sendo tratata como numeric, mas ela eh qualitativa ("factor")
#Transformando a variável sexo em um factor e indicando os rótulos de cada categoria
#Assumindo que 1 eh feminino e 2 masculino
base$sexo = factor(base$sexo, labels=c("Feminino","Masculino"))
#Visualizando as linhas iniciais da base
head(base)
#analisando novamente a base de dados#
str (base)
#Note-se que agora "sexo" virou "factor"
# variavel qualitativa ordinal #
# Caso a ordem da variável seja importante (qualitativa ordinal), será necessário usar fatores ordenados:
#Transformando a variável escolaridade em um ordered e indicando os rótulos de cada categoria e as suas relações de grandeza
base$escolaridade = ordered(base$escolaridade,levels=c(2,3,4,1), labels=c("Analfabeto","Fundamental","Medio","Superior"))
#Note-se que eles ja devem estar ordenados na ordem correta e associar cada valor a uma categoria
base$sexo
base$escolaridade
#Veja que no caso de escolaridade ele retorna os niveis ordenados
## IMPORTANDO ARQUIVOS PRO R ##
#Descobrindo qual a pasta de trabalho que o R está "enxergando" neste momento
getwd()
#Caso não seja a pasta onde localiza-se o seu arquivo, podemos mudar essa pasta com a função setwd(…).
#setwd("PASSAR AQUI O CAMINHO DA SUA PASTA SEMPRE ENTRE ASPAS")
setwd("C:\\Users\\cursos\\Desktop\\Aula 02")
#Lembrando que em Windows ou dobro a barra ou inverto#
## IMPORTANDO DADOS ##
#IMPORTANTO TXT
base2 = read.table("Base saude.txt", header=TRUE, dec=",", na.strings=9)
# header+TRUE indica que ha cabecalho; dec="," indica que o que estou usando para decimal eh a vírgula e o na.strings=9 indica que o 9 equivale ao NA
#vendo a estrtutura de base2
str(base2)
summary(base2)
#note-se que ele esta lendo a variavel qualitativa "sexo" como quantitativa
#Tratando as variáveis qualitativas
#Transformando a variável Sexo em um factor
base2$Sexo = factor(base2$Sexo, labels=c("Feminino","Masculino"))
#Transformando a variável HIV em um factor
base2$HIV = factor(base2$HIV, labels=c("Não","Sim"))
#Transformando a variável Escolaridade em um ordered
base2$Escol = ordered(base2$Escol,levels=c(0,1,2,3,4,5), labels=c("Analfabeto","Fundamental Incompleto","Fundamental Completo","Medio Completo", "Medio Incompleto","Superior"))
#Transformando a variável DST em um factor
base2$DST = factor(base2$DST, labels=c("Não","Sim"))
#Transformando a variável Tipo de DST em um factor
base2$Tipo = factor(base2$Tipo, labels=c("Sifilis","Hepatite","Outros"))
#Visualizando a (nova) base
head(base2)
summary (base2)
#IMPORTANTO csv
#Existem 2 funcoes, a read.csv e a read.csv2
#Os principais argumentos da função read.csv(…) são:
# •file - o nome do arquivo COM A EXTENSÃO ESPECIFICADA;
#•header - se o arquivo possui o nome das variáveis (default = TRUE - possui os nomes das variáveis);
#•sep - separador das variáveis (default - ,);
#•dec - simbolo do decimal (default - .).
#Os principais argumentos da função read.csv2(…) são:
# •file - o nome do arquivo COM A EXTENSÃO ESPECIFICADA;
#•header - se o arquivo possui o nome das variáveis (default = TRUE - possui os nomes das variáveis);
#•sep - separador das variáveis (default - ;);
#•dec - simbolo do decimal (default - ,).
#Fazendo a leitura do arquivo Base saude.csv
base3 = read.csv2("Base saude.csv", header=TRUE)
head(base3)
#IMPORTANDO XLS e XLSX
# Carregando o pacote xlsx
install.packages("xlsx")
install.packages("rJava")
library(xlsx)
install.packages("readxl")
library(readxl)
#EXPORTANTO DADOS
# Carregando o pacote xlsx
library(xlsx)
#Exportando o arquivo em .txt
write.table(base2,"Base modificada.txt",row.names=FALSE)
#O row.names=FALSE é para nao criar uma coluna com o numero das linhas, que eh desnecessario
#Exportando o arquivo em .csv
write.csv2(base2,"Base modificada.csv",row.names=FALSE)
#Exportando o arquivo em .csv
write.xlsx(base2,"Base modificada.xlsx",row.names=FALSE)
#GRANDES BASES DE DADOS#
# Verificando o tamanho do arquivo Base modificada.csv
file.size("Base modificada.csv")
# Verificando o tamanho do arquivo Base modificada.txt
file.size("Base modificada.txt")
# Verificando o tamanho do arquivo Base modificada.xlsx
file.size("Base modificada.xlsx")
#Dependo do formato, os arquivos possuem tamanhos distintos e tempos de leituras distintos:
# Verificando o tempo para a leitura do arquivo Base modificada.csv
system.time(base.teste <- read.csv2("Base modificada.csv"))
# Verificando o tempo para a leitura do arquivo Base modificada.txt
system.time(base.teste <- read.table("Base modificada.txt"))
# Verificando o tempo para a leitura do arquivo Base modificada.xlsx
system.time(base.teste <- read.xlsx("Base modificada.xlsx", sheetIndex=1))
# Verificando o tamanho e o tempo para a leitura do arquivo Base voos.csv com a função read.csv
file.size("Base voos.csv")*1e-6
system.time(base.testeA <- read.csv2("Base voos.csv"))
# 2 SOLUCOES PARA GRANDES BASES: DATA.TABLE E ARQUIVOS RDS
install.packages("data.table")
#Carregando o pacote data.table()
library(data.table)
# Verificando o tempo para a leitura do arquivo Base boos.txt com a função fread
system.time(base.testeC <- fread("Base voos.txt"))
#Salvando a base voos
saveRDS(base.testeB, "Base voos.rds")
# Verificando o tamanho do arquivo Base voos.rds
file.size("Base voos.rds")*1e-6