Posted by Clayton Casteli On May - 21 - 2014 0 Comment

Como já havíamos dito R é uma linguegem muito poderosa para se trabalhar com análises e cálculos estatísticos, tem um número muito grande de pacotes para cobrir as mais variadas funções estatísticas.
O que vamos apresentar nesse post é apenas uma introdução a liguagem e como trabalhar com suas estruturas de dados, porém R é muito mais do que vamos mostrar nesse post, pois esta trata apenas da manipulação de estruturas de dados como vetores, listas, matrizes e data frame.

Introdução a linguagem R Análises e Estatísticas

Pré-requisitos Instalação do R e RStudio no Linux Fedora 20

1 Começando com algumas operações básicos da linguagem R.

Para começar os testes digite o comando R no terminal.
R
> 2 ^ 3  (exponentiation)
[1] 8
> 2 * 2  (multiplication)
[1] 4
> 2 / 1  (division)
[1] 2
> 2 + 4  (addition)
[1] 6
> 2 - 2  (subtraction)
[1] 0
> q()     (exit)

Conhecendo vetores

> x <- 2		(atribuição de uma valor numérico)
> x
[1] 2
> x <- seq(1:10)  	(Atribuição de uma vetor numérico sequêncial de 1 a 10)
> x
 [1]  1  2  3  4  5  6  7  8  9 10
> x <- c(1, 2, 3)	(Atribuição de um vetor numérico)
> x
[1] 1 2 3
> x <- c("OI", "Alô")	(Atribuição de uma vetor de caracteres)
> x
[1] "OI"  "Alô"
>

Uso de operadores em vetores.

> x <- seq(1:10)  (atribuição de uma vetor de 1 a 10)
> x
 [1]  1  2  3  4  5  6  7  8  9 10
> x ^ x		   (Usando exponenciação para cada item do vertor, muito simples né. Isso funciona para todos os operadores)
 [1]           1           4          27         256        3125       46656
 [7]      823543    16777216   387420489 10000000000
>

2 - Vetores são os tipos mais comuns de estrutura de dados em R. Eles são homogêneos, ou seja, todo tipo de dados deve ser o mesmo. Os dados podem ser numéricos, lógicos ou caracteres. Caso haja vários tipos de dados R fará coerção do tipo de dado.

Criação de uma vetor de tipo numérico. Caso queira a repetição de uma valor dentro do vetor use rep(2,10). Repetição do valor 2 nesse exemplo.

> x <- c(1, 2, 3, 4)
> x
[1] 1 2 3 4
> mode(x)
[1] "numeric"
>

Aritimética em vetores.

> x <- seq(1:10)	(Vetor de 1 a 10)
> y <- seq(1:2)		(Vetor de 1 a 2)
> x * y			(multiplicação entre esses vetores, veja que o resultao foi dos números do vetor x pelo do vetor y. Comos os vetores são multiplos isso pode ser feito.)
 [1]  1  4  3  8  5 12  7 16  9 20
>

Adicionando elementos em um vetor existente

> x <- c(1:10)		(Cria um vetor de 1 a 10)
> x <- c(x, 11:15)	(Adiciona ao vetor existente x uma nova sequencia de 11 a 15)
> x
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
>

exemplo: \sigma ^{2} = \Sigma \rho (x)(x- \mu )^{2}

> x <- seq(1:5)
> p <- c(0.25, 0.55, 0.54, 0.32, 0.84)
> x
[1] 1 2 3 4 5
> p
[1] 0.25 0.55 0.54 0.32 0.84
> sigmaAoQuadrado <- sqrt(sum(p * (x - mean(x))^2))   (tradução da fórmula)
> sigmaAoQuadrado
[1] 2.286919
>

3 -Matrizes Em R uma matrix também é um vetor, o contrário não e verdadeiro. É possivél criar matrizes heterogêneas porém para tipos de dados diferentes listas e data frames são mais recomendados.

Criação de uma Matrix

> x <- c(1:10)			(criação de uma vetor)
> x <- matrix(x, 2, 5)		(criação de uma matrix com 2 linha e 5 colunas)
> x
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
> class(x)			(identificacao do objeto x, é uma matrix)
[1] "matrix"
>

Replicação de dados dentro de uma Matrix

> x <- matrix(0, 2, 5)	(Criação de uma matrix com inicialização dos campos 0)
> x
     [,1] [,2] [,3] [,4] [,5]
[1,]    0    0    0    0    0
[2,]    0    0    0    0    0
>

Redefinindo os nomes de colunas e linhas em uma Matrix

> x <- c(1:10)
> x <- matrix(x, 2, 5)
> x
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
> colnames(x) <- c("A", "B", "C", "D", "E")	(redefine o nome das colunas)
> rownames(x) <- c("R1", "R2")			(Redefine o nome das linhas)
> x
   A B C D  E
R1 1 3 5 7  9
R2 2 4 6 8 10
>

exemplo:  \chi ^{2} = \frac{ \Sigma (O - E)^{2} }{E}

Pensando em um exemplo onde O seja a segunda coluna e E seja a terceira coluna da matrix. Temos a formula abaixo em linguagem R para resolução.

> x <- matrix(seq(1:20),5,4)
> x
     [,1] [,2] [,3] [,4]
[1,]    1    6   11   16
[2,]    2    7   12   17
[3,]    3    8   13   18
[4,]    4    9   14   19
[5,]    5   10   15   20
> xAoQuadrado <- sum((x[,2]-x[,3])^2/x[,3]) (Fórmula para resolução)
> xAoQuadrado
[1] 9.731518
>

Manipulando uma Matrix

Assim como em vetores é possível fazer operação com matrizes de uma forma bem simples.

> A <- matrix(c(6, 1, 0, -3, -1, 2), 3, 2)	(criação de uma matrix A)
> B <- matrix(c(4, 2, 0, 1, -5, -1), 3, 2)	(criação de uma matrix B)
> A + B						(Soma entre cada item da matriz)
     [,1] [,2]
[1,]   10   -2
[2,]    3   -6
[3,]    0    1
> A * B						(multiplicação entre cada item da matriz)
     [,1] [,2]
[1,]   24   -3
[2,]    2    5
[3,]    0   -2
>

Data Frames - Um Data Frame em R combina características de vector, matrix e listas. Como um vetor que deve ter o mesmo tipo de dado em uma coluna, como uma matrix que deve ter linhas e colunas e como uma lista que permite combinação de tipos de dados numéricos e caracteres. Podemos imaginar um data frame como uma planilha.
Embora a criação de um data frame seja simples, a importação por uma arquivo .csv é mais comum.

Criação de um Data Frame por um vetor

>
> times  <-c("São Paulo","Palmeiras","Corinthians","XV de Piracicaba","Santos")		(vetor times)
> pontos <-c(2,3,3,5,2)									(vetor pontos)
> times
[1] "São Paulo"        "Palmeiras"        "Corinthians"      "XV de Piracicaba"
[5] "Santos"
> pontos
[1] 2 3 3 5 2
> rodada <- data.frame(times, pontos)							(criação do data frame)
> rodada
             times pontos
1        São Paulo      2
2        Palmeiras      3
3      Corinthians      3
4 XV de Piracicaba      5
5           Santos      2
>

Os valores das colunas de um data frame podem ser referenciados por rodada[2], nessa acaso apenas a coluna pontos será vista.

> rodada[2]
  pontos
1      2
2      3
3      3
4      5
5      2
>

Leitura de uma tabela .csv dentro de um Data Frame

Nesse exemplo vamos carregar uma tabela em um arquivo .csv para um data frame do R. Para isso criamos uma arquivo "tabela_estatistica.csv" afim de validar nosso exemplo, para esse exemplo crie uma tabela no exel e converta essa tabela para um arquivo em .csv.

Para fazer esse carregamento é preciso que o arquivo estaja no Working Directory corrente do R, para saber onde o arquivo deverá estar utilize a função getwd(). Para nosso exemplo esta localizada em "/home/clayton". Veja no exemplo abaixo o objeto dataF esta com os valores carregados do arquivo.

> getwd()
[1] "/home/clayton"
> dataF <- read.csv("tabela_estatistica.csv", header=TRUE)
> head(dataF)
       State  X1980  X1990  X1995  X2000  X2001  X2002  X2003  X2005  X2006
1    Alabama  7,465 14,899 19,683 23,521 24,477 25,128 26,338 29,136 30,894
2     Alaska 13,007 20,887 25,798 29,642 31,027 32,151 33,568 35,612 38,138
3    Arizona  8,854 16,262 20,634 24,988 25,878 26,183 26,838 30,267 31,936
4   Arkansas  7,113 13,779 18,546 21,995  22,75 23,512 24,289 26,874 28,473
5 California 11,021 20,656 24,496 32,149 32,655 32,996 33,749 37,036 39,626
6   Colorado 10,143 18,818 24,865 32,434 33,455 33,276 34,283 37,946 39,491
   X2009  X2010
1 33,096 33,945
2 42,603 44,174
3 32,935 34,999
4 31,946  33,15
5 42,325 43,104
6 41,344 42,802
> head(dataF)

About the author

Clayton Casteli Atua com desenvolvimento de software, J2EE, C/C++, IBM BPM. É entusiasta de novas tecnologias, principalmente open source. Formado em Engenharia da Computação pela PUCCAMP-SP, Pós-Graduado pela UNICAMP em Engenharia de Software com enfase em SOA e Pós-Graduado em Business Intelligence pelo IBTA.

Be Sociable, Share!

Protected by WP Anti Spam