quinta-feira, 17 de outubro de 2013

A função Plot () - Parte I

A função plot desenha um ponto, ou um conjunto de pontos, em um eixo coordenado. Em outras palavras, desenha gráficos.
A estrutura básica da função é:
plot(x, y, ...)

Em que:
 x e y são vetores de pontos correspondentes ao eixo x e ao eixo y, respectivamente.
... são atributos opcionais.

Vamos à prática:
Queremos plotar o ponto (2,3) no plano cartesiano. Para isso, basta digitarmos plot(2,3). Veja o resultado:

Agora queremos plotar vários pontos no plano cartesiano. Lembre-se que x é o vetor de coordenadas do eixo x e y, o do eixo y. Desse modo:






x<-c(1,2,3,4,5,6,7,8,9,10)
y<-c(1,5,-2,3,9,9,9,-4,2,0)
plot(x,y)








Agora, vamos explorar um pouco os atributos da função plot:

main: título do gráfico;
sub: subtítulo do gráfico;
xlab: nome para o eixo x;
ylab: nome para o eixo y.

Note que os valores para cada atributo acima é uma cadeia de caracteres. Para o exemplo anterior, suponha que os pontos que plotamos sejam as notas dos alunos (y) para cada aluno (x), somente para a disciplina de biologia. Então, usando os atributos acima, vemos o seguinte resultado:

plot(x,y, main='Notas dos alunos',  sub='Disciplina: biologia', xlab='Aluno', ylab='Nota')


Note que o subtítulo fica exatamente embaixo do gráfico.

Até agora plotamos apenas pontos. O atributo type nos permite escolher o tipo de plotagem, por exemplo, pontos ou linha. Seus valores são:

p: pontos
l: linhas
b: pontos e linhas
c: apenas as linhas da plotagem 'b'
o: pontos e linhas sobrepostos
h: linhas de histograma (verticais)
s: para escada
n: sem plotagem

Note que, se quisermos plotar apenas os eixos, sem plotar nenhum ponto ou linha, usaremos type='n'. Pode não fazer sentido agora, mas em outras postagens mostrarei o quão útil é esse valor do atributo type.

Ainda com os pontos do exemplo anterior, façamos:

plot(x,y, main='Notas dos alunos',  sub='Disciplina: biologia', xlab='Aluno', ylab='Nota', type='l')



plot(x,y, main='Notas dos alunos',  sub='Disciplina: biologia', xlab='Aluno', ylab='Nota', type='o')


plot(x,y, main='Notas dos alunos',  sub='Disciplina: biologia', xlab='Aluno', ylab='Nota', type='h')


Note que o tipo 'h' retorna a linha que liga o ponto até o zero do eixo y.  Os demais atributos deixo a vocês experimentarem.

Na próxima postagem, falarei um pouco sobre funções. Vamos começar a programar em alto nível agora!





segunda-feira, 23 de setembro de 2013

Resumindo o básico

Vimos alguns conceitos e comandos básicos até agora, por isso detalhei o que fizemos. Antes de começarmos a programar de verdade, vou fazer um esquema dos conceitos e comandos vistos:

Variáveis são objetos que armazenam informações temporárias.

Um script é uma sequência de passos (comandos) a serem executados e interpretados.


ESTRUTURA DE CONDIÇÃO


ifelse
ifelse(condição, valor se a condição é verdadeira, valor se a condição é falsa)
if... else...
if(condição){
bloco de comandos
}else if(condição){
bloco de comandos
}else{
bloco de comandos
}

ESTRUTURAS DE REPETIÇÃO (LOOPS)


for
for(var_ind in sequencia){
bloco de comandos
}
while
while(condição){
bloco de comandos
}

domingo, 22 de setembro de 2013

Loops

As estruturas de repetição (loops) são bastante eficientes, pois possibilita a execução de comandos repetidas vezes.
Imagine que você fez uma pesquisa sobre o que as pessoas pensavam sobre o 'amor' em uma palavra e que agora você tenha esse resultado em um vetor. Agora, você quer saber se alguma pessoa pensa que o amor é 'vida'.
Suponha o seguinte vetor de resultados:
respostas<- c('calor','dinheiro','mãe','carro','família','internet','música',                                   'dinheiro','dinheiro','vida','comida')
Vejamos que temos apenas 11 respostas, armazenadas no vetor respostas. Para esse caso é simples: olhando as respostas sabemos que uma pessoa respondeu 'vida'. Mas imagine um vetor com mais de mil respostas, ficaria complicado de olhar uma a uma não?
Para verificar se há a resposta 'vida', temos que olhar o valor de cada posição do vetor respostas e compará-lo com a string 'vida'.

Uma string é uma cadeia de caracteres.

Para fazer isso, podemos escrever um comando de comparação para cada posição do vetor:
if (respostas[1]=='vida') resultado='sim';
if (respostas[2]=='vida') resultado='sim';
e assim sucessivamente.
Mas isso é equivalente a olhar cada posição manualmente e não é nosso interesse. Veja que a linha de comando para cada posição do vetor é a mesma, exceto pelo valor da posição do vetor. Isto é, podemos escrever, de forma geral:
if(resposta[i]=='vida') resultado='sim';
para i=1,..,11.
Mas como transformar o comando acima em um comando que possa ser executado? Vamos introduzir o comando for. Sua estrutura é:
for(var_cont in sequência){
    bloco de comandos; 
}
em que var_cont é uma variável de contagem e sequência é o intervalo de valores que a variável de contagem assumirá.
Para nosso exemplo, escreveríamos:
for(i in 1:length(respostas)){
if (respostas[i]=='vida') resultado='sim';
}
No código acima, criamos uma variável indicadora i que assume os valores de 1 até o tamanho do vetor (length(respostas)) e verifica se existe a palavra vida no vetor de respostas. A comparação será executada 11 vezes, porque vai percorrer todo o vetor.

Obs: A variável criada dentro do parâmetro do comando for (no caso, a variável i) será usada apenas dentro do for. Quando esse parar de ser executado, essa variável não existirá mais.

Como nosso problema consiste em analisar se existe ou não a palavra vida, podemos parar a repetição se acharmos alguma palavra vida, esteja ela no começo, no meio ou no final do vetor. Para sair de um loop sem que este tenha terminado, usamos o comando break:
for(i in 1:length(respostas)){
if (respostas[i]=='vida') {
resultado='sim';
break;
}
}
Ou seja, se, em alguma iteração do for acima, a condição respostas[i]=='vida' for verdadeira, o resultado é 'sim' e as iterações são paradas.

Uma outra estrutura de repetição é o comando while. Sua estrutura é:
while( condição ) {
bloco de comandos;
}
em que condição é uma condição para que o bloco de comandos seja executado sempre que for verdadeira.
Como não se criam variáveis dentro do parâmetro do comando while, essas devem ser declaradas antes desse comando. No nosso exemplo, faríamos:
i<-1
while( i<= length(respostas) ) {
if (respostas[i]=='vida') {
resultado='sim';
break;
}
i=i+1;
}
No código acima, declaramos uma variável de contagem antes do comando while. A condição para executar o loop é que i seja menor ou igual ao tamanho do vetor. Assim, ele executa, verifica se existe a palavra 'vida' na posição i do vetor. Se sim, pára o loop, caso contrário, incrementa 1 na variável de contagem e repete o processo se esse novo valor respeitar a condição. Assim, percorremos cada posição do vetor para verificar se a palavra 'vida' existe nesse vetor de respostas.
É importante ressalta que, quando trabalhamos com variável de contagem, normalmente utilizamos o comando for.

quinta-feira, 19 de setembro de 2013

Trabalhando com condições

Neste tópico, veremos como programar condições.
Suponha que um jogador é vencedor se atinge um número mínimo de pontos, e perdedor caso contrário. Sabendo do número de pontos desse jogador, você quer saber se ele é vencedor ou não. Note a palavra chave da frase anterior: "se". É essa palavra que implica uma condição para verificar se um argumento é válido.
Para programarmos o "se", usamos o comando if. Veja o exemplo:
resultado<-c()
pontos<-200
if (pontos>150) resultado<-'vencedor'
resultado
Se você executar esse comando, o valor de resultado será 'vencedor', pois pontos>200 é um argumento verdadeiro. Troque o valor de pontos para 100 e execute, o que aparece? NULL. Isso porquê construímos a variável e não agregamos nenhum valor, ou seja, quando pontos>150 é um argumento falso, não programamos nada para essa situação. Em outras palavras, não demos comandos para quando o jogador é perdedor.
Ficamos com o seguinte pensamento: SE pontos>150, então o jogador é vencedor; SENÃO, o jogador é perdedor. Construímos esse argumento da seguinte forma:
resultado<-c()
pontos<-200
if (pontos>150) {
resultado<-'vencedor';
}else {
resultado<-'perdedor';
}
resultado
Execute o bloco de comandos acima. Como pontos>150 é um argumento verdadeiro, o resultado será 'vencedor'. Agora troque o valor de pontos para 100 e execute. Veja: como pontos>150 é um argumento falso, então o comando dentro do bloco else será executado, ou seja, o resultado será 'perdedor'.
Um outro jeito de fazer o comando if...else... acima, é usar o comando ifelse, como mostro a seguir:
resultado<-c()
pontos<-200
resultado<- ifelse (pontos>150,'vencedor','perdedor')
A estrutura do ifelse é:
ifelse (condição, valor se a condição é verdadeira, valor se a condição é falsa)
Obs: É importante perceber que, usando ifelse, estaremos modificando o valor de uma única variável. Mas se queremos executar um bloco de comandos, essa estrutura não é mais válida. 

Agora imagine que você queira classificar o jogador devido sua pontuação em 'ruim', se o jogador atinge pontuação inferior a 150, 'medio', se atinge entre 150 a 200, e 'bom' se atinge pontuação acima de 200. Então, faremos:
class<-c()
pontos<-200
if (pontos<150) {
class<-'ruim';
}else if(pontos>=150 && pontos <=200){
class<-'médio';
}else {
class<-'bom'
}
class
Note que, na segunda condição usamos o operador lógico &&, que significa 'e', ou seja: se pontos maior ou igual a 150 E pontos menor ou igual a 200.
Poderíamos construir o código acima utilizando o comando ifelse:
class<- ifelse (pontos<150 , 'ruim' , ifelse ( pontos>200 , 'bom' , 'médio ' ) )
Utilizamos o que chamamos de ifelse encaixados ou nested if-else. Isto é, uma condição de um ifelse depende do resultado da condição de outro ifelse.
Temos que concordar que o código fica mais 'enxuto' (com menos linhas), mas quando você tem mais de duas condições, imagine o trabalho que dará programar essas condições com ifelse. E também pelo fato de que ifelse não se aplica para bloco de operações, usaremos sempre (tirando raras exceções) a estrutura if... else...

terça-feira, 17 de setembro de 2013

Trabalhando com scripts

Há dois jeitos de programar no R: usando a tela inicial (terminal), ou construindo scripts. Vamos, primeiro, definir um script no nosso âmbito de programação:

Um script é uma sequência de passos (comandos) a serem executados e interpretados.

No exemplo do post anterior, criamos duas variáveis, x e y, passamos um valor para x e calculamos o cubo de seu valor através da variável y, tudo feito no terminal do R.
Vamos fazer outro exemplo:

Suponha que, dada a aresta de um cubo medida em cm e o custo de 1dm³  de um líquido, você quer calcular o volume em litros e em dm³, e calcular o custo do líquido para esse volume. Sabendo que a aresta mede 10 cm e o custo de 1dm³ desse líquido é 2, digitaremos no terminal do R:


Agora imaginem que a aresta, na verdade, mede 20 cm. Você vai ter que digitar tudo novamente para obter os resultados. Que preguiça, não? Mas, se você fizer um script, precisará mudar somente o valor da variável aresta e executar todos os passos novamente. 
Para se escrever um script no R, vá em 'Arquivo'->'Novo script'. Abrirá uma janela assim:



Digite tudo que digitamos no terminal, nessa janela.



Para executar uma linha, posicione o cursor para essa linha e aperte Ctrl+R. Para executar mais que uma linha, digamos, uma seleção, selecione os comandos desejados e aperte Ctrl+R. No nosso caso, vamos selecionar tudo e executar. Veja que, no terminal do R, apareceu todos os comandos que você executou no scritp. Agora, mude o valor da aresta para 20 e execute todo o script. Os comandos foram executados novamente, agora com o novo valor da aresta.



Para não perdermos nosso trabalho, vamos salvar o script. Vá em 'Arquivo'->'Salvar como', e salve o arquivo com a extensão .R. Caso não salve com extensão, o R consegue abri-lo e interpretá-lo, mas vamos ser organizados, correto?
Para nós, os scripts facilitarão em muito nossa vida. Imagine que você entra com um banco de dados, faz operações e descobriu que havia um erro em um comando seu. Se não tiver script, vai ter que digitar tudo novamente. Caso contrário, é só corrigir a linha de comando que apresenta erro e executar tudo novamente. 
Acostume-se com os scripts, pois vamos trabalhar muito com eles aqui.

sexta-feira, 9 de agosto de 2013

O conceito de variável

Depois de instalar o software R, você já deve tê-lo aberto e conferido sua interface (não vou entrar em detalhes dela, não é a intenção desse blog):



Antes de nos aventurarmos na programação e no que pode ser feito, gostaria de falar rapidamente sobre um assunto, básico para uns, não entendidos para outros: variáveis. Vou começar explicando o que é uma variável.
Uma variável é um 'objeto' que utiliza um espaço na memória para se armazenar valores. Esses valores não são fixos, podendo variar, como o próprio nome sugere. Essa variável pode armazenar números, cadeia de caracteres, ou mesmo objetos como listas. Enfim, vamos à prática:

Comecemos a declarar uma variável x. A princípio não sabemos o que queremos guardar, então declaremos desse modo (o primeiro sinal, de 'maior que', é próprio do R, não precisa digitá-lo):

O lado direito da seta fica o que vamos armazenar, e no esquerdo a variável. Vamos começar armazenando o número 10 nessa variável. Ou seja, quando fizermos isso, podemos interpretar que x valerá 10.
Para mostrar o valor de x, digite o nome da variável e aperte enter:
Agora, vamos alterar o valor da variável x, vamos armazenar a cadeia de caracteres 'programando':

Verifique o que está armazenado na variável:

Podemos usar variáveis para modificar valores de outras variáveis. Para isso, declaremos uma variável y:
Suponha que queremos armazenar um número na variável x, interpretado, por exemplo, como o comprimento de uma aresta de um cubo. Suponha que esse cubo tenha arestas medindo 10 cm cada. Então:

Agora, queremos saber qual o volume desse cubo e armazenar essa informação na variável y. Façamos:
Verificando o valor de y, encontra-se 1000, ou seja, o volume do cubo é de 1000 cm³. Vale lembrar que o número 1000 está armazenado na variável y. Se você alterar esse valor na própria variável y, ele será substituído, e você perde essa informação.

CONCLUSÃO: Variáveis são objetos que armazenam informações temporárias.

É importante ter em mente essa definição, pois ela será sua salvação para gerar operações mais complicadas, como ler uma base de dados em um arquivo e alterar os dados dessa base de dados sem alterar o arquivo, fazer operações com esses dados, etc.
O exemplo acima poderia muito bem ter sido feito apenas digitando 10^3, tendo o mesmo resultado.
Ou seja, o R também pode ser usado como calculadora. O uso desse exemplo foi apenas para facilitar o entendimento do assunto. Acredite, o mundo real não é tão simples assim!

terça-feira, 6 de agosto de 2013

Apresentação

Bom galera, vou começar falando um pouco do objetivo desse blog. Não sou expert na área de programação então muitas coisas que falarei aqui poderão ser, provavelmente, resolvidas de formas mais simples que eu desconheço. Então falarei de comandos básicos, que ajudem vocês a utilizar o programa.
Sabe aquele comando que você precisa para fazer alguma análise? Uma estatística descritiva... uma leitura dos dados em arquivo de texto... pois então: por experiência própria, sei que levamos MUITO tempo para descobrir comandos simples! São horas de pesquisa para saber qual comando faz o que a gente quer e descobrimos que não passa de uma simples linha! Aí que entra o objetivo desse blog: diminuir esse tempo de pesquisa! Vou postar aqui comandos que facilitem à vocês, usuário de R, a fazer o que querem, como ler dados de um arquivo de texto, algumas estatísticas descritivas, construção de gráficos, coisas básicas que são fáceis de fazer mas se gasta muito tempo em descobri-las, principalmente para iniciantes.
Como eu já disse, não sou expert na área, então dúvidas serão bem vindas mas nem sempre poderei respondê-las.
Para começar o blog, deixo abaixo o link para quem ainda não possui o R:

http://cran.r-project.org/bin/windows/base/old/

No link acima você encontrará a lista de todas as versões do R, sendo a versão 3.0.0 a mais recente. No endereço abaixo você encontra informações do R, assim como informações de instalação.

http://cran.r-project.org/

Boa instalação e 'diversão' com o R!