Escolar Documentos
Profissional Documentos
Cultura Documentos
Setembro 2019
A linguagem R
Análise de dados
Programação em R
Índice
1 A linguagem R
História do R
Usar o R
Exemplos
2 Análise de dados
Tipos de dados e operações básicas em R
Vector, Matrix, Array, List
Factor, Data frame, Ausência de valores
3 Programação em R
Estruturas de controle de fluxo e funções em R
Funções estatísticas em R
Gráficos em R usando ggplot2
Origens do R
R é um dialecto da linguagem S
S é uma linguagem cujo desenvolvimento se iniciou em
1976 por John Chambers e outros do Bell Labs, tratava-se
de um ambiente para análise estatística implementado
como um conjunto de bibliotecas em Fortran. Em 1988 o
systema foi reescrito na linguagem C (versão 3), e em
1998 apareceu a versão 4.
Em 1993 Bell Labs forneceu a StatSci (que agora se
chama Insightful Corp.) uma licença exclusiva para
desenvolver e vender a linguagem S. Em 2004 Insightful
comprou à Lucent (Bell Labs) a linguagem S por $2M.
Insightful vende a sua implementação da linguagem S
usando o nome S-PLUS
Origens do R (cont.)
A linguagem R foi criada na Nova Zelândia por Ross Ihaka
e Robert Gentleman em 1991, como uma variante do S.
Em 1993 a linguagem R foi anunciada para o público em
geral
Em 1995 a linguagem R passa a ser open source (GNU
General Public License)
Em 1997 é criado o Core Group do R
Em 2000 aparece o R 1.0
Em 2004 aparece o R 2.0
Em 2012 aparece o R 2.15
Em 2013 aparece o R 3.0 (versão 3.6.1 em 5-Jul-2019)
A sintaxe do R é parecida com a do S-PLUS mas a
semântica é bastante diferente
R existe para muitas plataformas incluindo Windows / Mac
OS X / Linux / (como o Android é uma variante do Linux
existe a possibilidade de se compilar o R para Android)
CTeSP TPSI Matemática e Estatística 5 / 174
A linguagem R História do R
Análise de dados Usar o R
Programação em R Exemplos
Origens do R (cont.2)
Instalar o R
Usar o R
getwd(), get working directory, fornece o directório onde
vai procurar os ficheiros que se mandar abrir
setwd("c:/users/avs/dados"), set working
directory, altera o directório de trabalho, usar / mesmo em
Windows
sink("output.txt"), redirecciona o output (não afecta
os gráficos) para um ficheiro de texto, se o ficheiro já
existir escreve por cima, sink("output.txt",
append=TRUE) escreve a partir do fim do ficheiro,
sink("output.txt", append=TRUE, split=TRUE)
escreve simultaneamente para o ecrã e para o ficheiro
sink() redirecciona output de novo somente para o ecrã
Nas strings pode-se usar aspas simples ou duplas mas é
preferível usar aspas duplas, isto é, só usar aspas simples
nas strings que tem texto com aspas duplas
CTeSP TPSI Matemática e Estatística 9 / 174
A linguagem R História do R
Análise de dados Usar o R
Programação em R Exemplos
Usar o R (cont.)
pdf("imagem.pdf") redirecciona o output gráfico para
um ficheiro PDF. Pode-se também usar
jpeg("imagem.jpg"), png("imagem.png"),
win.metafile("imagem.wmf")ou
postscript("imagem.eps") com ps.options() e
setEPS()
dev.off() faz flush do ficheiro e reset do output gráfico
para passar a vir somente para o ecrã
source("ficheiro.R"), executa os comandos R que
se encontrarem dentro desse ficheiro
ls(), lista objectos do workspace (não são os ficheiros
mas sim os objectos criados no ambiente de trabalho)
rm(nome) ou rm("nome") remove do workspace o
objecto, rm(list=ls()) remove a maioria dos objectos
neste momento existentes no workspace (liberta memória)
CTeSP TPSI Matemática e Estatística 10 / 174
A linguagem R História do R
Análise de dados Usar o R
Programação em R Exemplos
Usar o R (cont.2)
install.packages("nome") instala um novo package,
seguidamente é necessário fazer library(nome) para o
carregar
old.packages() informa que packages podem ser
actualizados (mas não actualiza)
update.packages() actualiza todos os packages que
estejam instalados
installed.packages() diz o nome e a versão dos
packages instalados
library() fornece nome e descrição duma linha dos
packages instalados
help(package="packageName") dá a ajuda do
package incluindo índice das novas funções, depois
pode-se usar help(...) para cada uma dessas funções
R.version diz qual é a versão do R
CTeSP TPSI Matemática e Estatística 11 / 174
A linguagem R História do R
Análise de dados Usar o R
Programação em R Exemplos
Usar o R (cont.3)
Executar expressão R ou programa R em comandos.R a
partir da shell (linha de comando do sistema operativo):
Rscript -e ’installed.packages()’
Rscript comandos.R
q(): sair do R
help.start(): ajuda inicial do R
help(foo) ou ?foo fornece o help da função foo
vignette(package="foo"): docs extra do package foo
apropos("foo"): devolve vector com todos os objectos
que contém o texto foo (isto é que possuem um match
parcial no nome foo)
??foo ou help.search("foo"): procura a expressão
regular foo na documentação de todos os packages
RSiteSearch("foo"): abre browser e procura foo no
site do R
CTeSP TPSI Matemática e Estatística 12 / 174
A linguagem R História do R
Análise de dados Usar o R
Programação em R Exemplos
Usar o R (cont.4)
2 4 6 8 10 12
idade
90
●
80
peso
● ●
70
60
altura
Tipos de dados em R
Tipos primitivos:
character: "Ana Silva" ou ’Ana Silva’ (texto)
numeric: 12.4 (no real) ou -45 (apesar de ser inteiro)
¯
integer: -45L (no inteiro, sufixo L força armazenamento
¯
inteiro, ver class() e mode() de -45 versus -45L)
complex: 3 + 7i (números imaginários)
boolean: TRUE ou FALSE (pode-se também usar: T, F)
Tipos compostos:
vector: conjunto indexável de objectos do mesmo tipo
matrix: vector duplo (2 dimensões, linhas x colunas)
array: matriz podendo ter mais do que 2 dimensões
list: conjunto indexável de objectos que podem ser de
tipos diferentes
data.frame: tabela em que cada coluna tem um tipo
factor: vector de inteiros onde a cada inteiro corresponde
um nome, para representar categorias (enum, masculino e
feminino em vez de 0 e 1)
CTeSP TPSI Matemática e Estatística 22 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Booleanos
Representação de datas em R
Usa-se as.Date("2016-09-15") para converter um
string para uma data, e usa-se as.character(aData)
para converter no sentido contrário
Pode-se criar uma data marcando uma origem e dando
depois um no negativo (no de dias antes dessa data) ou
¯ ¯
positivo (no de dias depois dessa data):
¯
as.Date(-100, origin="2016-01-31")
as.Date(12, origin="2016-01-31")
Sys.Date() dá a data atual, date() a data atual
incluindo hh:mm:ss, datas podem ser subtraídas entre si
Para formatar uma data usa-se por exemplo
format(Sys.Date(), format="%B %d %Y"), onde
%d dia de 1 a 31, %a dia da semana abreviado e %A não
abreviado, %m mês de 1 a 12, %b mês abreviado e %B não
abreviado, %y ano com 2 dígitos e %Y com 4 dígitos
CTeSP TPSI Matemática e Estatística 24 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Análise de dados em R
O vector é o objecto mais básico do R para guardar dados
Preparar dados para poderem ser analisados envolve:
Seleccionar a estrutura de dados onde se vai colocar os
dados
Importar os dados dum ficheiro para a estrutura de dados
Um dataset (conjunto de dados) é normalmente uma
tabela onde as linhas representam observações e as
colunas representam variáveis:
Linhas / Registos / Observações / Exemplos
Colunas / Campos / Variáveis / Atributos
Em R um objecto é qualquer coisa que pode ser
armazenada numa variável, podem ser constantes,
estruturas de dados, funções ou grafos. Os objectos têm
um mode() que descreve como o objecto é armazenado,
e uma class() utilizada por funções genéricas tais como
print() para saber como o objecto deve ser tratado
CTeSP TPSI Matemática e Estatística 26 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Especificidades do R
Nomes de objectos (variáveis): começar com uma letra e
depois uma combinação de letras, dígitos, ou o ponto
O ponto “.” não tem significado especial nos nomes, o $ é
semelhante ao ponto noutras linguagens orientadas a
objectos: A$x quer dizer variável x no data frame A
Tipos especiais do R: NaN (Not a Number), Inf (infinity,
1/0=Inf), -Inf, NA (Not Available), NULL (objecto nulo)
O símbolo # indica início dum comentário que se estende
até ao fim da linha, não existem comentários multi-linha
mas pode-se usar “if (FALSE) {...}” para comentar
um fragmento de código
Se se atribuir valores a um elemento não existente de um
vector, list, matrix, ou array, a estrutura é
expandida de modo a acomodar o novo valor, os valores
intermédios ficam com o valor NA (Not Available)
CTeSP TPSI Matemática e Estatística 27 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Especificidades do R (cont.)
Ao contrário da maioria das linguagens de programação
os índices das estruturas de dados começam em 1 em vez
de em 0
O R é sensível à diferença entre maiúsculas e minúsculas,
por exemplo help() funciona mas Help() dá erro
(função desconhecida)
No R ou no R Studio após se escrever o início do nome de
uma função pode-se usar a tecla tab para preencher
automaticamente o resto do nome da função ou mostrar a
lista de nomes possíveis
Para se aceder à documentação do R e se obter help
sobre como utilizar uma função coloca-se um ? antes do
nome da função: ?mode, ?is.integer
Todas as expressões em R devolvem um valor (pode ser
NULL), às vezes o valor é invisível pelo que não é impresso
CTeSP TPSI Matemática e Estatística 28 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Especificidades do R (cont.2)
O R suporta 3 tipos de operadores para efectuar a
atribuição de um valor (isto é colocar um valor numa
variável), pelo que estas 3 instruções são equivalentes
embora seja preferível usar somente a primeira forma:
x <- 5
x = 5
5 -> x
(x <- 5) atribuir valor e também imprimir o resultado
Atenção que “x = c(-12, -14, -20, -34)” seguido
de x[x < -15] dá como resultado “[1] -20 -34” mas
“x[x <-15]” devido à falta do espaço destrói o valor do x
dando o resultado “[1] NA” e o x passa a valer “[1] 15”
Operadores nas condições: == (igualdade), !=
(desigualdade), < (menor), > (maior), <= (menor ou igual),
>= (maior ou igual), & (e lógico), | (ou), ! (negação)
CTeSP TPSI Matemática e Estatística 29 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Especificidades do R (cont.3)
Programação em R
O “&&” e o “||” são usados em instruções condicionais na
parte relativa à programação, por exemplo
“if (x < 4 && y > 0) { ... } else { ... }”
Ciclos: for (k in 1:10) { print(k)}
k <- 1; while (k < 10) {print(k); k<-k+1}
Definir uma nova função com 3 argumentos:
f1 <- function(a, b, somar=TRUE) {
if (somar) a + b else 0
}
o último argumento não necesita de ser fornecido dado
possuir um valor por omissão, os argumentos são dados
de acordo com a sua ordem, ou usando os seus nomes e
ignorando a ordem: f1(b=2, a=4) ou f1(4, 2)
args(f1) fornece os nomes dos argumentos da função,
“...” representa um no variável de argumentos
¯
CTeSP TPSI Matemática e Estatística 34 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Notas
O > representa a prompt do R Studio, operadores
aritméticos: -, +, *, /, ^ (potência), %/% (divisão inteira),
%% (resto da divisão inteira)
R converte elementos individuais (escalares) para vectores
só com 1 elemento, é por isso que imprime o [1] para
representar o índice do 1o (e único) elemento do vector
¯
CTeSP TPSI Matemática e Estatística 35 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Vector
Num vector todos os dados têm de ser do mesmo tipo, os
vectors podem ser numéricos, lógicos ou de caracteres
Um vector vazio pode ser criado usando vector()
Se se tentar misturar no mesmo vector dados de tipos
diferentes, o R converte alguns desses dados, de modo a
ficarem todos os dados com o mesmo tipo
Para se criar um vector usa-se a função c(), que permite
combinar os seus argumentos num vector ou numa lista
> x <- c(12, 15, 17, 30:38, 70)
> x
[1] 12 15 17 30 31 32 33 34 35 36 37 38 70
Para se saber o tipo de um vector usa-se a função mode(),
usa-se length() para se saber o seu tamanho
Somar (+), subtrair (-), multiplicar (*) ou dividir (/) vetores:
x <- 1:4; y <- 6:9; x + y
[1] 7 9 11 13
CTeSP TPSI Matemática e Estatística 37 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Vector (cont.)
Para multiplicar todos os elementos dum vector por um
valor escalar multiplica-se o vector pelo valor pretendido:
> x <- c(2:8) # bastava: x <- 2:8
> x
[1] 2 3 4 5 6 7 8
> y <- x * 10
> y
[1] 20 30 40 50 60 70 80
Acede-se a valores específicos do vector indexando:
> x[2]
[1] 3
> x[3:5]
[1] 4 5 6
> x[c(2, 4, 7)]
[1] 3 5 8
CTeSP TPSI Matemática e Estatística 38 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Vector (cont.2)
Em alternativa pode-se atribuir nomes às posições
(índices) do vector ao se criar o vector ou a posteriori:
temperaturas <- c(braga=32.4, porto=24.6,
coimbra=31, lisboa=29)
temperaturas <- c(32.4, 24.6, 31, 29)
names(temperaturas) <- c("braga", "porto",
"coimbra", "lisboa")
Resultado:
> temperaturas
braga porto coimbra lisboa
32.4 24.6 31.0 29.0
> temperaturas[1] ou temperaturas["braga"]
braga
32.4
names(temperatura) devolve vector com os nomes ou
NULL se não houver nomes
CTeSP TPSI Matemática e Estatística 39 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Vector (cont.3)
Se se tiver um vector x de tamanho 5 (índices de 1 a 5) e
se fizer x[8] <- 2 então o vector é estendido para poder
comportar esse novo valor e os 2 valores em falta (nos
índices 6 e 7) são preenchidos com NA
Se se tiver um vector de inteiros e se atribuir a uma das
posições do vector um string (character) então todos os
valores do vector são convertidos para character
Para apagar a posição 2 do vector e reduzir o seu
tamanho de uma unidade fazer x <- x[-2]
Para apagar as posições 3 e 9 do vector e reduzir o seu
tamanho de duas unidade fazer x <- x[c(-3, -9)]
Dado um vector x substituir todos os seus elementos pelo
valor 2: x[] <- 2 (a ausência de uma condição dentro
do [] significa seleccionar todos)
CTeSP TPSI Matemática e Estatística 40 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Vector (cont.4)
Matrix
Matrix (cont.)
O outro argumento opcional de matrix denominado
dimnames=list(rowNames, colNames) permite
atribuir nomes às linhas e às colunas:
> x <- matrix(1:20, nrow=4, ncol=5,
byrow=TRUE, dimnames=list(c("R1", "R2",
"R3", "R4"), c("c1", "c2", "c3", "c4",
"c5")))
> x
c1 c2 c3 c4 c5
R1 1 2 3 4 5
R2 6 7 8 9 10
R3 11 12 13 14 15
R4 16 17 18 19 20
Agora pode-se usar x[2,4] ou x["R2","c4"] para
obter o 9
CTeSP TPSI Matemática e Estatística 47 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Matrix (cont.2)
Matrix (cont.3)
Matriz identidade
Array
Indexar array
Indexar num array é semelhante a indexar numa matrix, o
que é importante é colocar corretamente as vírgulas como
separadores das dimensões que se querem aceder
Dado o array a<-array(1:30,c(2,3,5)) se fizermos:
a[2„3] obtemos vector com a segunda linha da terceira
camada
a[2,c(3,1),4] obtemos vector com a terceira e a
primeira colunas (nesta ordem) da segunda linha, da
quarta camada
a[1„] obtemos uma matrix com as primeiras linhas de
cada camada, só que cada uma dessas linhas aparece
como uma coluna da matrix resultado (quando múltiplos
vectors são extraídos de um array por omissão são
devolvidos como colunas)
a[-1„] obtemos uma matrix com todas exceto as
primeiras linhas de cada camada (só que devolvidas como
colunas)
CTeSP TPSI Matemática e Estatística 54 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
List
Uma lista é um vector genérico podendo conter valores de
tipos diferentes, é criado usando a função list()
> x <- list(12,c("alfa","beta"),TRUE,5:9)
> x
[[1]]
[1] 12
[[2]]
[1] "alfa" "beta"
[[3]]
[1] TRUE
[[4]]
[1] 5 6 7 8 9
CTeSP TPSI Matemática e Estatística 60 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
List (cont.)
Para se obter um elemento da lista indexa-se usando
duplos parentesis rectos:
> x <- list(12,c("alfa","beta"),TRUE,5:9)
> x[[4]]
[1] 5 6 7 8 9
Usando somente um par de parentesis rectos obtém-se a
sublista com o elemento que se encontra nesse índice:
> x[4]
[[1]]
[1] 5 6 7 8 9
Portanto a diferença é que x[[...]] devolve um
elemento da lista, enquanto que x[...] devolve uma lista
Para se obter uma sublista com o 2o e o 4o elementos da
¯ ¯
lista usa-se x[c(2,4)]
CTeSP TPSI Matemática e Estatística 61 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
List (cont.2)
Os elementos da lista podem ser acedidos pelo nome se
ao se criar a lista se atribuir um nome a cada um deles
> x <- list(nome="Ana Silva", morada="Rua
Nova 17", telefone=229866123)
> x
$nome
[1] "Ana Silva"
$morada
[1] "Rua Nova 17"
$telefone
[1] 229866123
Agora pode-se usar x[["telefone"]] ou x$telefone
ou x[[3]] para obter o valor do telefone
CTeSP TPSI Matemática e Estatística 62 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
List (cont.3)
Duas formas de extrair um elemento de uma lista de listas:
> x<-list(a=list(10,12,15),b=c(3.14,2.81))
> x[[c(1, 3)]]
[1] 15
> x[[1]][[3]]
[1] 15
Adicionar um novo elemento a uma lista: basta atribuir um valor
a um novo nome ou a um novo índice, a lista expande para
incluir esse novo valor: “x$novoNome <- novoValor” ou
“x[[novoIndice]] <- novoValor”
Fazer append a uma lista: x[length(x) + 1] <- y
Remover um elemento de uma lista: basta atribuir NULL a esse
elemento (x[[y]] <- NULL), após isso ser feito os índices a
seguir a y reduzem-se todos de 1 unidade
Para converter uma lista num vector usa-se unlist(), esta
função achata a lista e efectua todas as conversões que forem
necessárias
CTeSP TPSI Matemática e Estatística 63 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Factor
As variáveis podem ser descritas como sendo nominais,
ordinais, e contínuas:
Variáveis nominais representam categorias, não possum
uma ordem implícita (ex.: mobiliário, ferramenta, viatura)
Variáveis ordinais representam categorias ordenadas,
possuem uma ordem implícita mas não possuem um valor
numérico (ex.: mau, medíocre, suficiente, bom, excelente)
Variáveis contínuas podem tomar qualquer valor dentro de
um dado intervalo, e possuem uma ordem implícita e um
valor numérico associado (ex: a idade, 12 ou 12.4 ou 13)
Em R as variáveis do tipo categoria ou do tipo categoria
ordenada são representadas usando factor
A função factor() associa aos valores das categorias
um vector de inteiros de 1 a n, onde n é a quantidade de
valores diferentes que essa variável toma, por omissão a
atribuição de índices aos nomes é por ordem alfabética
CTeSP TPSI Matemática e Estatística 64 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Factor (cont.)
Factor (cont.2)
Factor (cont.3)
Se se criar um factor a partir de um vector que possui
valores que não existem nos levels, então os valores em
falta são substituídos por NA
Em alternativa a se fornecer os levels, para remover
(substituir por NA) valores do factor que se encontravam no
vector a partir do qual ele está a ser criado, usa-se
exclude, isto é factor(..., exclude=c(...)),
esses valores são substituídos por NA
x é um factor e quer-se remover todos os levels que não
estão a ser usados: x <- factor(x, exclude=NULL)
Em casos muito especiais pode-se também usar NA nos
levels do factor x, por omissão este fica a ser o último
level. Mas isto tem algumas limitações e deve ser evitado,
até porque para se ter também NA nos valores tem-se de
usar a atribuição is.na(x)[i] <- TRUE (ver ?factor)
CTeSP TPSI Matemática e Estatística 67 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Factor (cont.4)
Factor (cont.5)
Factor (cont.6)
Factor (cont.7)
Factor (cont.8)
Factor (cont.9)
Factor (cont.10)
Factor (cont.11)
Data frame
Ao contrário da matriz cada coluna pode ter tipo diferente
> codigo <- c(1, 3, 4, 5)
> estado <- c("novo", "usado", "novo",
"defeituoso")
> valor <- c(100, 30, 90, 12)
> categoria <- c("mobilia", "mobilia",
"ferramentas", "mobilia")
> osDados <- data.frame(codigo, estado,
categoria, valor)
> osDados
codigo estado categoria valor
1 1 novo mobilia 100
2 3 usado mobilia 30
3 4 novo ferramentas 90
4 5 defeituoso mobilia 12
CTeSP TPSI Matemática e Estatística 76 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
● ● ●
5
● ● ●
4
codigo ● ● ●
3
2
● ● ●
1
3.0
● ● ●
2.5
estado
2.0
● ● ● ● ● ●
1.5
1.0
● ● ●
categoria
● ● ●
100
● ● ●
● ● ●
80
60
valor
40
● ● ●
20
● ● ●
> str(osDados)
’data.frame’: 4 obs. of 4 variables:
$ codigo : num 1 3 4 5
$ estado : Factor w/ 3 levels "defeituoso","novo",..: 2
3 2 1
$ categoria: Factor w/ 2 levels "ferramentas",..: 2 2 1 2
$ valor : num 100 30 90 12
> str(osDados2)
’data.frame’: 4 obs. of 4 variables:
$ codigo : num 1 3 4 5
$ estado : Ord.factor w/ 3 levels
"defeituoso"<"usado"<..: 3 2 3 1
$ categoria: Factor w/ 2 levels "ferramentas",..: 2 2 1 2
$ valor : num 100 30 90 12
CTeSP TPSI Matemática e Estatística 83 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
Ausência de valores
NaN (Not a Number) é usado para resultados indefinidos
em operações matemáticas, is.nan() é usado para
testar essas situações
NA (Not Available) é usado nos restantes casos, is.na()
é usado para testar essas situações
Os valores NA também possuem um tipo (uma classe),
podem ser integer NA, character NA, etc
Um valor NaN é também um NA (isto é, algo que tem o
valor NaN é considerado como sendo um valor em falta),
mas o inverso não é verdade
> x <- c(1, 2, NaN, NA, 4)
> is.na(x)
[1] FALSE FALSE TRUE TRUE FALSE
> is.nan(x)
[1] FALSE FALSE TRUE FALSE FALSE
CTeSP TPSI Matemática e Estatística 100 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
dump/source, dput/dget
save/load, serialize/unserialize
Package readit
O objetivo deste package é adivinhar o formato a partir da
extensão do nome do ficheiro e de uma análise heurística
dos dados, e a seguir fazer tudo automaticamente
install.packages("readit")
Consegue processar ficheiros .txt (desde que tenham
um delimitador qualquer, o package tenta adivinhar o
delimitador), .csv, .xls/.xlsx (incluindo ler de outra
folha que não a primeira), .sas7bdat/.sas7bcat
(ficheiros do programa SAS), .dta (ficheiros do programa
Stata), .sav/.por (ficheiros do programa SPSS), .json
(arrays JSON, que são convertidos em data frames)
x = readit("file.json")
y = readit("file.xlsx")
z = readit("file.xlsx", sheet=2)
CTeSP TPSI Matemática e Estatística 119 / 174
A linguagem R Tipos de dados e operações básicas em R
Análise de dados Vector, Matrix, Array, List
Programação em R Factor, Data frame, Ausência de valores
if / else
if sem else:
if(x > 3) {
x <- 3
}
Tipo normal de if:
if(x > 3) {
y <- 10
} else {
y <- 0
}
Tipo especial de if:
y <- if(x > 3) {
10
} else {
0
}
CTeSP TPSI Matemática e Estatística 122 / 174
A linguagem R Estruturas de controle de fluxo e funções em R
Análise de dados Funções estatísticas em R
Programação em R Gráficos em R usando ggplot2
for
x <- c("a", "b", "c", "d")
Usando índices definidos manualmente:
for(i in 1:4) {
print(x[i])
}
Usando índices definidos automaticamente:
for(i in seq_along(x)) {
print(x[i])
}
Usando os próprios valores sem recorrer a índices:
for(k in x) {
print(k)
}
Sem usar chavetas (e colocando tudo na mesma linha para ser
mais compacto): for(i in 1:4) print(x[i])
for (cont.)
while
contador <- 0
while (contador < 10) {
print(contador)
contador <- contador + 1
}
z <- 5
while (z >= 3 && z <= 10) {
print(z)
moeda <- rbinom(1, 1, 0.5)
if (moeda == 1) { ## random walk
z <- z + 1
} else {
z <- z - 1
}
}
repeat
repeat {
...
if (...)
break
...
}
Criar funções em R
Distribuição normal
0.4
0.3
0.2
34.1% 34.1%
0.1
2.1% 2.1%
0.1% 13.6% 13.6% 0.1%
0.0
4000
3000
Frequency
2000
1000
0
−4 −2 0 2 4
rnorm(1e+06)
ggplot2
Baseada no conceito de Gramática de gráficos: conjunto
de componentes independentes que podem ser
compostos de diferentes formas
Os gráficos podem ser criados de uma forma iterativa e
editados mais tarde
Usa um conjunto bem escolhido de valores por omissão
(defaults) de modo a facilitar a criação da maior parte dos
gráficos
Os gráficos são criados por camadas: a primeira camada
mostra os dados em bruto, e depois adiciona-se camadas
de anotações e sumários estatísticos
O uso da gramática dos gráficos evita que os gráficos
sejam somente um conjunto de casos especiais,
permitindo olhar para um gráfico como uma coleção de
elementos que podem ser combinados
CTeSP TPSI Matemática e Estatística 160 / 174
A linguagem R Estruturas de controle de fluxo e funções em R
Análise de dados Funções estatísticas em R
Programação em R Gráficos em R usando ggplot2
install.packages("ggplot2");
library(ggplot2)
mpg é um dataframe que vem com o ggplot2 com 234
linhas e 11 variáveis para os 38 modelos de carros que
foram atualizados todos os anos entre 1999 e 2008 nos
Estados Unidos (isto é, os modelos mais populares).
Contém os seguintes dados: manufacturer, model,
displ (litros), year (1999 ou 2008), cyl, trans (tipo de
transmissão), drv (tracção), cty (consumo em milhas por
galão na cidade), hwy (idem highway), fl (tipo de
combustível), class. Para mais informação executar
?mpg