Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Vetores
Vetores so uma estrutura de dados sobre a qual podemos aplicar funes como por exemplo as que fornecem medidas estatsticas.
Vetores
A funo c() usada para criar um vetor a partir de seus argumentos. Por exemplo: > x <- c(2,3,5,7,11) # os 5 primeiros nmeros primos >x [1] 2 3 5 7 11 # digitando o nome do objeto exibido o seu contedo Os argumentos de c() podem ser escalares ou vetores. > y <- c(x,13,17,19) # adicionando mais trs nmeros primos >y [1] 2 3 5 7 11 13 17 19
Sequncia
H ainda outras formas de se gerar um vetor. Por exemplo, para gerar uma sequncia de nmeros inteiros usa-se os dois pontos: > xx <- 1:10 > xx [1] 1 2 3 4 5 6 7 8 9 10 Se o vetor muito longo e no "cabe" em uma linha o R vai usar as linhas seguintes para continuar imprimindo o vetor.
Os nmeros entre colchetes no fazem parte do objeto e indica a posio do vetor naquele ponto. Pode-se ver que [1] indica que o primeiro elemento do vetor est naquela linha, [19] indica que a linha seguinte comea pelo dcimo nono elemento do vetor e assim por diante.
Funo seq()
> seq(1,27,3) [1] 1 4 7 10 13 16 19 22 25 Poderamos usar argumentos com nomes na forma: > seq(from=1,to=27,by=3) A funo seq() pode gerar uma sequencia de certo nmero de elementos se usar o argumento length= : > seq(from=1,to=27,length=4) [1] 1.000000 9.666667 18.333333 27.000000 Isto retorna uma sequncia de 4 valores que comea no valor do argumento from e termina no valor do argumento to. Neste caso o argumento by com os intervalos entre os valores calculado automaticamente.
Usando rep()
Outra funo til para produzir vetores a funo rep() que retorna o primeiro argumento repetido o nmero de vezes indicado pelo segundo argumento: > rep(1,10) [1] 1 1 1 1 1 1 1 1 1 1 > rep(c(1,2),10) [1] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 > c(rep(0,10),rep(1,5)) [1] 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
Caracteres e Fatores
O R pode armazenar dados alfanumricos da mesma forma que armazena dados numricos. Dados na forma de caracteres devem estar entre aspas simples como ' ou duplas como ". Pode-se usar uma ou outra contanto que sejam as mesmas no incio e no final. Exs.: > c1 <- "Hello" # um caracter como escalar > c1 [1] "Hello > c2 <- c("Yes",'Maybe',"No") # um vetor de caracters > c2 [1] "Yes" "Maybe" "No"
Caracteres
Algumas das funes usadas para construir vetores numricos podem tambm ser usadas com caracteres. > c3 <- rep("Monkey",4) # usando rep() > c3 [1] "Monkey" "Monkey" "Monkey" "Monkey > c4 <- rep(c("Monkey","Bucket"),3) > c4 [1] "Monkey" "Bucket" "Monkey" "Bucket" "Monkey" "Bucket
Fatores
Fatores so usados para armazenar dados categricos. Por exemplo, suponha que voc tem dados de um grupo de pessoas e quer armazenar a informao sobre o sexo dos indivduos. Pode-se usar um cdigo numrico como 0 para homens e 1 para mulheres ou pode-se usar um cdigo na forma de caracter como 'H' para homens e 'M' para mulheres. Mas em ambos casos DEVE-SE usar um factor.
Construindo fatores
Fatores so facilmente construdos a partir de vetores alfanumricos. Para tal utiliza-se a funo as.factor combinada com o vetor: > c5 <- c('M','F','F','F','M','M') > c5 [1] "M" "F" "F" "F" "M" "M > f5 <- as.factor(c5) > f5 [1] M F F F M M Levels: F M
Note que fatores so mostrados de forma semelhante mas no identica aos vetores alfanumricos. Os valores dos fatores so impressos sem aspas e os nveis do fator so tambm impressos.
funo levels()
As categorias (nveis) de um fator podem ser vistas usando a funo levels(): > levels(f5) [1] "F" "M" # o resultado um vetor alfanumrico
Alm disto, os nveis de um fator podem ser facilmente modificados assinalando um novo vetor alfanumrico aos nveis do fator: > levels(f5) <- c("Female","Male") > f5 [1] Male Female Female Female Male Male Levels: Female Male
funo table()
Uma das coisas que se pode fazer com um fator tabular os nmeros em cada categoria usando a funo table(): > table(f5) Female Male 3 3 # 3 de cada! Vamos examinar um exemplo mais detalhado.
Exemplo:
Suponha que temos dados de altura de 4 homens e 3 mulheres. As alturas dos homens em centmetros so: 175, 184, 180, 182. As alturas das mulheres so: 176, 174, 169. Entrando com os dados das alturas, temos: > alt <- c(175, 184, 180, 182, 176, 174, 169) > alt [1] 175 184 180 182 176 174 169 E com os dados de sexo, j definindo um fator > sexo <- as.factor(rep(0:1, c(4,3))) > sexo [1] 0 0 0 0 1 1 1 Levels: 0 1
Continuao do Exemplo:
Agora assinalando nomes aos nveis do fator: > levels(sexo) <- c("homem", "mulher") > sexo [1] homem homem homem homem mulher mulher mulher Contando o nmero de elementos em cada sexo: > table(sexo) # tecla enter sexo homem mulher 4 3
Calculando a Mdia
> mean(alt) # mdia de todos os individuos [1] 177.1429 Agora calculando a altura mdia para cada sexo. > by(alt, sexo, mean) # Aps o comando Teclar enter INDICES: homem [1] 180.25 -----------------------------------------------------------INDICES: mulher [1] 173
Vetores de ndices
Voce pode extrair partes de um vetor usando um vetor de ndices: > y <- x[c(1,3,5)] >Y [1] 10 8 6 x[4:7] [1] 7 6 5 4 Notem que o valor retornado um vetor.
ndices Negativos
Isto a princpio pode parecer estranho mas o R define isto como sendo todo o vetor exceto o N-simo elemento. Este mecanismo nos d uma forma fcil de remover elementos de um vetor. > x <- 1:10 > x[-3] [1] 1 2 4 5 6 7 8 9 10 # sem o 3 > x[c(3,4,7)] > x[-c(3,4,7)] # Menos os valores 3,4, e 7 [1] 1 2 5 6 8 9 10
Outros exemplos:
> x <- 1:10 > x[-length(x)] # todos exceto o ultimo elemento [1] 1 2 3 4 5 6 7 8 9 > x[length(x):1] # inverte a ordem dos elemento de x[1] 10 9 8 7 6 5 4 3 2 1 H tambm uma funo para fazer esta inverso: rev(x) - na verdade h funes no R para maioria das coisas simples que voce possa querer fazer.
Objetos:
A funo summary() muito til. Para um vetor numrico ela retorna um rpido resumo: > x <- (1:100)**2 > summary(x) Min. 1st Qu. Median Mean 3rd Qu. Max. 1.0 663.3 2551.0 3384.0 5663.0 10000.0
ndices
ndices so a maneira utilizada pelo R para extrair partes de um vetor. So utilizados colchetes e os ndices so contados a partir de 1. > x <- 10:1 y Recebe 2 valor de x >x [1] 10 9 8 7 6 5 4 3 2 1 > y <- x[2] >y [1] 9 Aqui y recebe o valor do segundo elemento de x.
Criando Grficos
>riqueza <- c(15,18,22,24,25,30,31,34,37,39,41,45) >area <- c(2,4.5,6,10,30,34,50,56,60,77.5,80,85) >area.cate <- rep(c("pequeno", "grande"), each=6) >plot(riqueza~area) >plot(area,riqueza) # o mesmo que o anterior >boxplot(riqueza~area.cate) >barplot(riqueza)
Comando plot(riqueza~area)
boxplot(riqueza~area.cate)
barplot(riqueza)
Grfico Simples
> x <- 1:20 >x [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 > y <- x**3 >y [1] 1 8 27 64 125 216 343 512 729 1000 1331 1728 2197 2744 3375 [16] 4096 4913 5832 6859 8000 > plot(x,y)
Argumentos Opcionais
Grficos com linhas ligando os pontos podem ser obtidos utilizando o argumento opcional type="l" na funo plot(): > plot(x,y,type="l") H vrias outras opes para os grficos. > plot(x,y,type="b") > plot(x,y,type="o") > plot(x,y,type="s") > plot(x,y,type="c") > plot(x,y,type="h")
plot(x,y,type="l")
Outros tipos
>points(rev(x),y) # Estes vocs mesmos testaro > lines(x,8000-y) # Qualquer dos grficos forma um arco > points(rev(x),y,pch=3) # adiciona cruzes > points(x,8000-y,pch="$") # usando o smbolo dlar >plot(x,y, pch="@") # usando o smbolo arroba >plot(x,y, pch= 1:3) # usa Triangulos, Circulos e cruzes >lines(x,y,lwd=4) # linha grossa >lines(rev(x),y,lty=2) # linha interrompida Estes Grficos vocs mesmos iro plotar e os prximos..
Comandos
> plot(c(0,20),c(-8000,8000),type='n') > lines(x,y) > lines(x,-y) Vejamos um outro exemplo: > plot(c(0,20),c(0,30), type='n') > segments(5, 3, 15, 20) > lines(c(12, 15, 7), c(3, 10, 8), col="red") > abline(30, -2, lty=2, col="blue")
Criando Matrizes
PROXIMA AULA CRIANDO MATRIZES..........