{:br}
[caption id="attachment_102" align="aligncenter" width="223"] R logo[/caption]
Iniciando
Quando comecei a utilizar o R o maior problema foi a adaptação devido ao fato de já utilizar SQL com bancos relacionais, imediatamente surgiam as dúvidas:
- Como faço um "where" ?
- Tem como fazer um "like" ?
- Como faço um "group by"
- Como faço para ordenar?
- Como faço um "limit"
R vs SQL ?
Quase todos os recursos disponíveis do R para análise de dados estão disponíveis na maioria dos bancos de dados relacionais, então porque utilizar o R ?
- O R foi criado para análise e não para persistência, controle de transações, rede e outros. Desta forma o R responde com muito mais velocidade considerando o mesmo hardware utilizado no banco relacional.
- Possui uma infinidade de bibliotecas disponíveis gratuitamente em seu repositório.
- Existem um infinidade de gráficos disponíveis nativamente como pode ser visto na figura 1 e todos os outros que se possa imaginar disponíveis como bibliotecas em seu repositório central.
- O R foi criado para análise estatísticas, sendo assim, se você pretende fazer este tipo de análise, não há o que discutir.
[caption id="attachment_143" align="aligncenter" width="263"] Fig. 1[/caption]
Comparando de forma prática:
Vamos utilizar alguns exemplos simples para nos familiarizarmos com a forma de consulta do R.
Para nossos exemplos vamos utilizar o seguinte dataset:
> library('datasets') > head(airquality) Ozone Solar.R Wind Temp Month Day 1 41 190 7.4 67 5 1 2 36 118 8.0 72 5 2 3 12 149 12.6 74 5 3 4 18 313 11.5 62 5 4 5 NA NA 14.3 56 5 5 6 28 NA 14.9 66 5 6
Filtrando
É possível criar desde filtros simples como "where Ozone = 41" ate filtros mais complexos utilizando expressão regular.
Abaixo alguns exemplos práticos:
Recurso | SQL | R |
---|---|---|
Where | ... where month = 5 | airquality[airquality$Month == 5,] |
Like | ... where Ozone like '4%' | airquality[grep('4.', airquality$Ozone),] |
Group by | select count(*) from airquelity
group by Month |
aggregate(airquality, by=list(airquality$Month), FUN=length) |
Ordenamento | select * from airquelity
order by Ozone |
airquality[order(airquality$Ozone),] |
Limit | select * from airquelity
limit 10 |
head(airquality, 10) |
E os JOINS ?
Quando trabalhamos com analise no R de forma interativa o ideal é que você providencie um dataframe reconfigurado e que contenha todas as dimensões/tabelas necessárias, mas ainda assim há situações onde se faz necessário mesclar dataframes, sendo um script de carga ou ate mesmo no modo interativo, pra isto podemos utilizar o comando merge.
>merge(frameA, frameB, by='ID')
Comando utilizados neste post:
- library Carrega uma biblioteca informada como parâmetro
- head Exibe apenas os primeiros registros de um DataFrame
- grep Filtra registros de um DataFrame com base em expressão regular
- aggregate Agrupa registros considerando um campo agregador e uma função aplicada a coluna de "valor"
- order Ordena os registros informados
Site oficial: R{:}{:en}
[caption id="attachment_102" align="aligncenter" width="223"] R logo[/caption]
Starting
When I started using R the biggest problem was adapting due to the fact already using SQL with relational databases, immediately arose doubts:
- How to do a "where"?
- It is to make a "like"?
- How to make a "group by"?
- How do I order?
- How to make a "limit"?
R vs SQL ?
Almost all available resources of R for data analysis are available in most relational databases, so why use the R?
- The R was created for analysis and not for persistence, transaction management, network and others. Thus the R responds with much more speed considering the same hardware used in the relational database.
- It has a plethora of freely available libraries in your repository.
- There are an infinity natively available graphics as seen in Figure 1 and all the other imaginable available as libraries in its central repository.
- The R was created to analysis statistics, so if you plan to do this kind of analysis, there is nothing to discuss.
[caption id="attachment_143" align="aligncenter" width="263"] Fig. 1[/caption]
Comparing in a practical way:
Let's use some simple examples to become familiar with the form of consulting the R.
For our example we will use the following dataset:
> library('datasets') > head(airquality) Ozone Solar.R Wind Temp Month Day 1 41 190 7.4 67 5 1 2 36 118 8.0 72 5 2 3 12 149 12.6 74 5 3 4 18 313 11.5 62 5 4 5 NA NA 14.3 56 5 5 6 28 NA 14.9 66 5 6
Filtering
You can create from simple filters such as "where Ozone = 41" even more complex filters using regular expression.
Below are some practical examples:
Recurso | SQL | R |
---|---|---|
Where | ... where month = 5 | airquality[airquality$Month == 5,] |
Like | ... where Ozone like '4%' | airquality[grep('4.', airquality$Ozone),] |
Group by | select count(*) from airquelity
group by Month |
aggregate(airquality, by=list(airquality$Month), FUN=length) |
Ordenamento | select * from airquelity
order by Ozone |
airquality[order(airquality$Ozone),] |
Limit | select * from airquelity
limit 10 |
head(airquality, 10) |
And the JOINS ?
When we work with analysis in R interactively ideally you arrange for a preconfigured dataframe, containing all the dimensions / required tables, but still there are situations where it is necessary to merge data frames, in a load script or even in the interactive way , for this we can use the merge command.
>merge(frameA, frameB, by='ID')
Commands used in this post:
- library load a external library
- head Show firsts rows of a DataFrame
- grep Filter rows in DataFrame using regular expression
- aggregate Aggregate rows in using a function to merge values ( Sum, Length ... )
- order Sort rows
Official Site: R{:}