Este documento demonstra o uso de várias técnicas em R a fim de serem usados como referencia

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
registros <- read.csv("~/Documentos/alunosUFCGAnon.csv")

Remover Dados NA

registrosNNA <- na.omit(registros)

Sobre os Dados

Cod_Evasao
0 = Não Desistiu

1 = Desistiu

Periodo
Períodos entre 2002.1 a 2014.1

Situacao Aprovado Trancado Reprovado
Reprovado por Falta

Tipo Obrigatória Optativa

Periodo_Ingresso Alunos que ingressaram no curso entre 1996.1 e 2014.1

Periodo_Relativo Período atual em relação ao período de ingresso no curso.

Usando Filtros

alunos_de_computacao <- registros[registros$Nome_Curso=='CIÊNCIA DA COMPUTAÇÃO - D',]
alunos_de_computacao <- filter(registros,Nome_Curso=='CIÊNCIA DA COMPUTAÇÃO - D')

O filter nesta execução apresenta uma eficiência melhor em 7% comparando com a versão clássica

Ordenando Campos

ordenado_por_periodo   <- registros[order(-registros$Periodo),]
ordenado_por_matricula <- arrange(registros,desc(Matricula))

Selecionar apenas algumas colunas

select_periodo_curso_credito <- select(registros,Periodo:Creditos)

Sample randomicamente uma amostra

sample_n(select(registros,Matricula,Nome_Curso,Periodo,Situacao),3)
##        Matricula                               Nome_Curso Periodo Situacao
## 756158    B31942                        QUÍMICA (LIC) - D  2009.1 Aprovado
## 591017    B17228                              DIREITO - N  2009.1 Aprovado
## 861958    B26646 ENG. DE BIOTECNOLOGIA E BIOPROCESSOS - D  2011.1 Aprovado

Ou Fracionaria

sample_frac(select(registros,Matricula,Nome_Curso,Periodo,Situacao),.00001)
##        Matricula                    Nome_Curso Periodo Situacao
## 864118    B29565   EDUCAÇÃO DO CAMPO (LIC) - D  2013.1 Aprovado
## 623269    B19376            SERVIÇO SOCIAL - M  2013.1 Aprovado
## 316601    B24386        COMUNICAÇÃO SOCIAL - N  2010.2 Aprovado
## 864306    B24475   EDUCAÇÃO DO CAMPO (LIC) - D  2013.2 Aprovado
## 778923    B29630              FÍSICA (LIC) - N  2009.1 Aprovado
## 833331    B24966 CIÊNCIAS BIOLÓGICAS (LIC) - D  2014.1 Aprovado
## 129219    B15643             ADMINISTRAÇÃO - N  2006.2 Aprovado
## 427750    B16428           GEOGRAFIA (LIC) - D  2014.1 Aprovado
## 46791     B12750              ARTE E MÍDIA - D  2006.1 Aprovado

Agrupando e Summarizando

Agrupando Colunas

a <- summarise(group_by(registros,Cod_Evasao,Situacao))

Media por período

media_periodo <- summarise(group_by(registros,Periodo),media_periodo = mean(Media_Disciplina,na.rm=TRUE))

Media por periodo e centro

summarise(group_by(registros,Periodo,Centro),media_periodo = mean(Media_Disciplina,na.rm=TRUE))
## Source: local data frame [240 x 3]
## Groups: Periodo [?]
## 
##    Periodo Centro media_periodo
##      (dbl)  (int)         (dbl)
## 1   2002.1     11      6.261074
## 2   2002.1     12      7.586207
## 3   2002.1     13      7.269258
## 4   2002.1     14      7.325455
## 5   2002.1     15      6.249438
## 6   2002.1     21      7.963333
## 7   2002.1     31      8.051477
## 8   2002.1     41      6.064122
## 9   2002.2     11      5.447073
## 10  2002.2     12      7.628673
## ..     ...    ...           ...

Alem da media por periodo e centro, mostra tambem na ultima coluna a quantidade de alunos que pertencem ao centro e periodo especificado

summarise(group_by(registros,Periodo,Centro),media_periodo = mean(Media_Disciplina,na.rm=TRUE), count=n())
## Source: local data frame [240 x 4]
## Groups: Periodo [?]
## 
##    Periodo Centro media_periodo count
##      (dbl)  (int)         (dbl) (int)
## 1   2002.1     11      6.261074   330
## 2   2002.1     12      7.586207   150
## 3   2002.1     13      7.269258   312
## 4   2002.1     14      7.325455   235
## 5   2002.1     15      6.249438   389
## 6   2002.1     21      7.963333   181
## 7   2002.1     31      8.051477   245
## 8   2002.1     41      6.064122   306
## 9   2002.2     11      5.447073   463
## 10  2002.2     12      7.628673   427
## ..     ...    ...           ...   ...

Acrescenta a media por evasao para cada periodo e centro especificado

periodo_centro <- summarise(group_by(registros,Periodo,Centro),media_periodo = mean(Media_Disciplina,na.rm=TRUE), count=n(),media_evasao=mean(Cod_Evasao,na.rm=TRUE))
periodo_centro
## Source: local data frame [240 x 5]
## Groups: Periodo [?]
## 
##    Periodo Centro media_periodo count media_evasao
##      (dbl)  (int)         (dbl) (int)        (dbl)
## 1   2002.1     11      6.261074   330  0.066666667
## 2   2002.1     12      7.586207   150  0.033333333
## 3   2002.1     13      7.269258   312  0.067307692
## 4   2002.1     14      7.325455   235  0.021276596
## 5   2002.1     15      6.249438   389  0.069408740
## 6   2002.1     21      7.963333   181  0.005524862
## 7   2002.1     31      8.051477   245  0.016326531
## 8   2002.1     41      6.064122   306  0.035947712
## 9   2002.2     11      5.447073   463  0.023758099
## 10  2002.2     12      7.628673   427  0.046838407
## ..     ...    ...           ...   ...          ...
filter(periodo_centro,count > 500, media_evasao > 0.1)
## Source: local data frame [32 x 5]
## Groups: Periodo [12]
## 
##    Periodo Centro media_periodo count media_evasao
##      (dbl)  (int)         (dbl) (int)        (dbl)
## 1   2002.2     41      5.928247   541    0.1016636
## 2   2008.1     51      6.342638  2479    0.1105284
## 3   2009.1     14      5.961102  3580    0.1187151
## 4   2009.1     15      5.402454  3938    0.1312849
## 5   2009.1     91      5.889563  2014    0.1122145
## 6   2009.2     14      5.924040  3713    0.1071910
## 7   2009.2     71      6.252500  1520    0.1184211
## 8   2009.2     91      5.923178  2205    0.1092971
## 9   2010.1     14      6.219085  4180    0.1186603
## 10  2010.1     71      6.060550  3166    0.1317119
## ..     ...    ...           ...   ...          ...