Programacao em R

Funções em R

Não lembrava que já tinha feito um post sobre funções em R e acabei escrevendo este. Como já estava pronto, não tinha motivos para deletar. Deixo aqui então um post que serve de complemento ao Funções no R.

Leia mais…

Anúncios

Outra forma de criar variável dummy no R

Além do método explicado em Criando variáveis dummy no R, podemos utilizar a função tslm() para criar uma dummy que será incluída diretamente na regressão linear.

Por exemplo, se você tiver a variável dia da semana nos seus dados, ao invés de fazer várias colunas (cada uma para um dia da semana) que recebe 0 e 1, basta você acrescentar a variável season dentro da função tslm(). Vejamos no exemplo abaixo a regressão com os dados da série uschange do pacote fpp2:

Leia mais…

Escolhendo o diretório no R

Esse post bem que poderia ser uma continuação do Primeiros passos no R Studio, pois trataremos de algumas coisas que você vai fazer assim que abrir o R e iniciar seus trabalhos, como escolher o diretório em que você vai salvar as figuras ou carregar os dados, saber as dimensões do arquivo externo que você carregou, etc., é bem útil.  É também um pouco repetitivo, já vimos algumas dessas funções separadamente, mas é bom reforçar para quem não viu outros links.

Leia mais…

Substituindo missing pela média no R

Já mencionei aqui como excluir os valores missing dos seus cálculos no R, e aqui explico como excluir as linhas contendo valores missing. Porém, como vocês bem sabem, ao excluirmos a linha inteira temos perda de informação, afinal, uma coluna pode estar missing mas todo o restante da linha conter informação. Sendo assim, alguns estatísticos podem preferir não excluir a linha e fazer a escolha de substituir esses missing por outro valor, aqui vamos substituir pela média:

Leia mais…

Proc Sort no R

Muita gente sabe utilizar o proc sort para ordenar os campos no SAS.

Por exemplo, podemos ordenar uma tabela chamada dados_entrada pelas colunas campo1 e campo2, do menor para o maior valor, e ter como saída uma tabela dados_saida (exemplo 1). E podemos também ordenar uma tabela chamada dados_entrada pelas colunas campo1, do menor para o maior, e campo2, do maior para o menor valor, e ter como saída uma tabela dados_saida (exemplo 2). Bastaria utilizar:

* exemplo 1
proc sort data= dados_entrada out= dados_saida; 
    by campo1 campo2; 
run;

* exemplo 2
proc sort data= dados_entrada out= dados_saida; 
    by campo1 descending campo2; 
run;

A mesma coisa, que nem todo mundo sabe, pode ser feita no R, e é até mais simples:

## exemplo 1
dados_saida = dados_entrada[order(dados_entrada$campo1,
dados_entrada$campo2),];

## exemplo 2
dados_saida = dados_entrada[order(dados_entrada$campo1,
-dados_entrada$campo2),];

R sendo R!

Filtros no R

Já falei várias vezes sobre como filtrar os dados no R (Excluindo linhas de uma tabela no R tem algo parecido), segue mais um exemplo:

## Filtrando apenas as linhas com a coluna mes igual a 3
## na tabela dados_modelo
dados_modelo[(dados_modelo$mes == 3),];

## Filtrando apenas as linhas com a coluna mes igual a 3, 4 ou 5
## na tabela dados_modelo
dados_modelo[dados_modelo$mes %in% c(3,4,5,6,7,8,9,10,11),];

## Filtrando apenas as linhas com a coluna mes igual a 3, 4, 5, ..., 10
dados_modelo[dados_modelo$mes %in% c(3:10),];

## Filtrando apenas as linhas com a coluna estado igual a SP
dados_modelo[dados_modelo$estado == "SP"),];

COMO EXPORTAR TABELAS NO R

Mais um post rápido…

Assim como a gente consegue importar tabelas no R utilizando o read.table(), é possível exportar as tabelas, porém, ao invés de ler, você vai escrever. Logo, como todas as funções do R, essa é mais uma bem intuitiva: write.table().

Se você quiser salvar seus dados em .txt espaçados por TAB:

## exporta tabela
write.table(nome_da_tabela, "C:/.../nome_da_tabela.txt", sep="\t");

Você pode mudar o separador que quer usar no .txt:

## exporta tabela separado por ponto e virgula
write.table(nome_da_tabela, "C:/.../nome_da_tabela.txt", sep=";");

É possível exportar para .xlsx também:

library(xlsx);
write.xlsx(nome_da_tabela, "C:/.../nome_da_tabela.xlsx");

A função write.table() é simples e poderosa. Veja que ela permite exportar para diversos formatos. Ou seja, você pode construir seus próprios reportes no R e exportar para um html por exemplo. Para quem conhece html, experimente construir vetores com código de html e depois fazer um write.table com formato .html. Você terá sua página construída direto do R!

Mais gráficos no R: qqplot()

A função qqplot() do R – pertencente ao pacote ggplot2 –  é uma das melhores para se fazer gráficos. Este post, sem muitas enrolações, é basicamente uma continuidade do Gráficos em R. Aqui vamos utilizar os dados da base Wage do pacote ISLR do R.

Para começar, apenas carregue os pacotes e visualize a base:


library(ggplot2);

library(ISLR);

View(Wage);

Como você pode ver, se trata de dados referentes a salário, escolaridade, saúde, etc.
Abaixo, você terá os códigos para gerar diferentes gráficos e comentários explicativos:
## Tracando grafico simples com qplot
## por default, temos um histograma bem simples
qplot(wage, data=Wage);

qplot1

Você deve ter notado a mensagem: “`stat_bin()` using `bins = 30`. Pick better value with `binwidth`“. Isto quer dizer que por default, seu histograma é dividido em 30 barras diferentes, mas você pode escolher o melhor número de barras. Vamos testar com 15:
qplot(wage, data=Wage, bins=15);
qplot2
## Agora, vamos visualizar cada barra separando pelo estado civil
qplot(wage, colour=maritl, data=Wage);

qplot3

## Separar apenas com a cor do contorno nao ficou legal
## vamos trocar tambem a cor de preenchimento utilizando fill
qplot(wage, colour=maritl, fill=maritl, data=Wage);
qplot4
## Podemos inclusive preencher os blocos com cores diferentes
## Por exemplo, para cada estado civil, queremos ver quantos sao
## saudaveis e quantos nao sao
qplot(wage, colour=maritl, fill=health, data=Wage);
qplot5
## Podemos visualizar graficos de densidade
qplot(wage, colour=maritl, data=Wage, geom="density");
qplot6
## Podemos tentar entender como duas variaveis interagem
## Exemplo: plotar salario vs idade
qplot(wage, age, data=Wage);
qplot7
## Ou ate tentar ver alguma relacao nao linear
qplot(wage, age*age, data=Wage);
qplot8
## Um pouco mais complexo, podemos verificar o comportamento de idade por salario
## para cada raca, dividindo ainda por pessoas que possuem ou nao plano de saude
## essa segunda divisao (raca por plano de saude) eh feita utilizando facets
qplot(age, wage, data=Wage, facets=race~health_ins,
xlab="Idade", ylab="Salario");
qplot9
## Por fim, podemos fazer um boxplot, mas divindo uma variavel por
## cada uma das diferentes classes de uma outra (categorica)
## vamos observar o boxplot de salario para cada classe de trabalhador
## main indica o titulo do grafico, ylab o titulo do eixo y
qplot(jobclass, wage, data=Wage, geom=c("boxplot"),
fill=jobclass, main="Salario por classe de trabalho",
xlab="", ylab="Salario")

qplot10

Agora você já está pronto para fazer diversos gráficos diferentes no R!