R - Aula 2, bibliotecas e entrada de dados
Bibliotecas
Como visto na aula anterior (R - Aula 1, introdução e tipos de dados), o R possui várias funções que vêm já automaticamente quando é instalado (como as aritméticas e lógicas), porém nem todas as funções essenciais do R vêm autmaticamente nele, por isso que há as biblioteca, que traz novas funções ao R. É essa característica que o torna sem limites, pois qualquer pessoa pode criar uma biblioteca e adicioná-la ao R, trazendo cada vez mais funcionalidades e novas características.
Instalação de uma biblioteca
As bibliotecas geralmente são direcionadas para diferentes tipos de coisas, por exemplo, a biblioteca ggplot2 é direcionada a plotar gráficos mais elegantes e é especializada nisso, a biblioteca cluster é especializada em análises de agrupamento por similaridade e a dplyr é especializada em adicionar novas funcionailidades para facilitar a linguagem R.
Para instalar uma biblioteca ao R, utiliza-se do comando install.packages() e o nome da bibliteca escrita entre aspas dentro dos parênteses, por exemplo:
Carregamento
Após instalar uma biblioteca, deve-se carregá-la para que suas funcionalidades sejam liberadas, a biblioteca é carregada a partir da função library():
Após carregada, todas as funcionalidades da biblioteca serão disponibilizadas, porém toda vez que o computador for desligado, reiniciado ou hibernado, é necessário apenas carregar as bibliotecas novamente, sem instalá-las.
Entrada de dados
O R lê vários tipos de dados e o que mais se é utilizado nele é o tipo data frame que é aquele com diferentes classes de valores de colunas, como já dito anteriormente. A entrada dos dados no R geralmente é a parte mais delicada de toda análise, pois é a partir dela que se vai desenrolar toda a análise estatística… Há alguns detalhes há serem checados antes de se começar a analisar os dados, vejamos…
Como já visto, cada coluna em um data frame possui sua respectiva classe, muitas vezes o R pode entender uma coluna com valores numéricos como lógicos ou mais comumente, como string. A problemática disso está no facto que apenas operadores numéricos realizam operações aritméticas, se uma coluna com valores de abundância for lido pelo R como do tipo string, o R não interpretará os valores das abundâncias na coluna, pois o R não entende o que é "1" + 1 (lembrando que "1" é diferente de 1). Mas, como que se checa isso?
Importando dados
Para baixar os dados utilizados, clique aqui.
Primeiramente, precisamos de realizar a entrada dos dados, que se dá da seguinte forma:
1. Instalar e carregar a biblioteca especializada em importar dados, chamada rio
2. Dar nome a uma variável que a tabela ou os dados serão atribuídos.
3. importar os dados com a função import e digitar o atalho de localização da tabela.
Obs.: é importante especificar o formato dos dados, se é .xlsx, .csv ou .txt.
Checando classes
Para checar as classes das colunas, utiliza-se da função glimpse() da biblioteca dplyr e será mostrada a classe de cada uma delas, é muito importate se atentar ao detalhe de se as variáveis com números são lidas como numeric (número no geral), integer (numero inteiro) ou double (número decimal), as duas últimas são subclasses da classe numeric:
Transformação de classes
Como se dá para ver, antes de cada um dos valores das colunas, há algumas siglas entre menores e maiores que <>, essas são as siglas das classes das colunas, pode-se certificar de que a maioria está de acordo com palavras na classe chr ou character e os números na classe dbl ou double com exceção da última Chaetodipterusfaber que possui números, porém foi lida como chr.
Rows: 52
Columns: 36
$ EMBARCAÇÃO <chr> "O SR VIVE", "O SR VIVE", "O SR VIVE", "TEI…
$ LOCALIDADE <chr> "CANDEIAS", "CANDEIAS", "CANDEIAS", "PONTA …
$ TIPSUBSTR <chr> "LAMA", "CASCALHO", "PEDRA", "CASCALHO", "C…
$ TEMPSUPERFICIE...C. <dbl> 26.0, 25.9, 26.0, 26.2, 26.2, 26.0, 26.3, 2…
$ TOTCap.g. <dbl> 21212, 26760, 47719, 13000, 54600, 54450, 1…
$ CPUE..g.m2.hora. <dbl> 2.0169480, 3.1572334, 3.1660275, 3.1599417,…
$ Acanthurusbahianuns <dbl> 0, 0, 0, 0, 0, 0, 1010, 0, 0, 0, 0, 0, 0, 2…
$ Acanthuruschirurgus <dbl> 0, 0, 175, 0, 0, 0, 580, 0, 0, 0, 0, 0, 0, …
$ Acanthuruscoeruleus <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Aetobatusnarinari <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Albulavulpes <dbl> 0, 0, 365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ Alectisciliaris <dbl> 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0,…
$ Alphestesafer <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Aluterusmonocerus <dbl> 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0,…
$ Anisotremussurinamensis <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Anisotremusvirginicus <dbl> 0, 0, 2040, 220, 0, 0, 0, 0, 850, 0, 0, 0, …
$ Archosargusprobatocephalus <dbl> 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ Archosargusrhomboidalis <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Achiruslineatus.n. <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Auxisthazard <dbl> 0, 0, 0, 0, 4530, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Bagrebagre <dbl> 3191, 0, 0, 0, 0, 0, 0, 0, 410, 1150, 0, 0,…
$ Bagremarinus <dbl> 3557, 2600, 0, 2510, 810, 4140, 0, 0, 0, 0,…
$ Bothusmaculiferus <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Calamuspenna <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0,…
$ Calamuspennatula <dbl> 0, 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ Caranxbartholomaei <dbl> 0, 0, 12858, 0, 0, 0, 181990, 0, 3310, 0, 4…
$ Caranxcrysos <dbl> 0, 0, 3780, 0, 2290, 27800, 0, 980, 640, 50…
$ Caranxhippos <dbl> 0, 770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ Caranxlatus <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Carcharhinusacronotus <dbl> 0, 0, 0, 0, 2890, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Carcharhinuslimbatus <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Cathoropsspixii <dbl> 2364, 4830, 0, 630, 190, 0, 0, 0, 0, 0, 0, …
$ Cephalopholisfulva <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220,…
$ Cetengraulisedentulus <dbl> 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
$ Centropomusparallelus <dbl> 0, 1090, 0, 1030, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Chaetodipterusfaber <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0"…
Para contornar esse erro, há de se trocar a classe da coluna de chr para nmr (numeric), int (integer) ou dbl com a função transform() e o nome do data frame que se deseja mudar uma de suas classes e a(s) variável(is) que foram lidas de forma incorreta com a função as.class para transformar a classe. Deve-se alocar os dados em outra variável, por exemplo a antiga variável era mtdcompt e com a transformação, os dados transformados foram alocados em mtdcomp.
mtdcomp = transform(mtdcompt, Chaetodipterusfaber = as.double(Chaetodipterusfaber))
glimpse(mtdcomp)Rows: 52
Columns: 36
$ EMBARCAÇÃO <chr> "O SR VIVE", "O SR VIVE", "O SR VIVE", "TEI…
$ LOCALIDADE <chr> "CANDEIAS", "CANDEIAS", "CANDEIAS", "PONTA …
$ TIPSUBSTR <chr> "LAMA", "CASCALHO", "PEDRA", "CASCALHO", "C…
$ TEMPSUPERFICIE...C. <dbl> 26.0, 25.9, 26.0, 26.2, 26.2, 26.0, 26.3, 2…
$ TOTCap.g. <dbl> 21212, 26760, 47719, 13000, 54600, 54450, 1…
$ CPUE..g.m2.hora. <dbl> 2.0169480, 3.1572334, 3.1660275, 3.1599417,…
$ Acanthurusbahianuns <dbl> 0, 0, 0, 0, 0, 0, 1010, 0, 0, 0, 0, 0, 0, 2…
$ Acanthuruschirurgus <dbl> 0, 0, 175, 0, 0, 0, 580, 0, 0, 0, 0, 0, 0, …
$ Acanthuruscoeruleus <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Aetobatusnarinari <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Albulavulpes <dbl> 0, 0, 365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ Alectisciliaris <dbl> 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0,…
$ Alphestesafer <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Aluterusmonocerus <dbl> 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0,…
$ Anisotremussurinamensis <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Anisotremusvirginicus <dbl> 0, 0, 2040, 220, 0, 0, 0, 0, 850, 0, 0, 0, …
$ Archosargusprobatocephalus <dbl> 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ Archosargusrhomboidalis <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Achiruslineatus.n. <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Auxisthazard <dbl> 0, 0, 0, 0, 4530, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Bagrebagre <dbl> 3191, 0, 0, 0, 0, 0, 0, 0, 410, 1150, 0, 0,…
$ Bagremarinus <dbl> 3557, 2600, 0, 2510, 810, 4140, 0, 0, 0, 0,…
$ Bothusmaculiferus <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Calamuspenna <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0,…
$ Calamuspennatula <dbl> 0, 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ Caranxbartholomaei <dbl> 0, 0, 12858, 0, 0, 0, 181990, 0, 3310, 0, 4…
$ Caranxcrysos <dbl> 0, 0, 3780, 0, 2290, 27800, 0, 980, 640, 50…
$ Caranxhippos <dbl> 0, 770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ Caranxlatus <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Carcharhinusacronotus <dbl> 0, 0, 0, 0, 2890, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Carcharhinuslimbatus <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Cathoropsspixii <dbl> 2364, 4830, 0, 630, 190, 0, 0, 0, 0, 0, 0, …
$ Cephalopholisfulva <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220,…
$ Cetengraulisedentulus <dbl> 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
$ Centropomusparallelus <dbl> 0, 1090, 0, 1030, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ Chaetodipterusfaber <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
Em resumo…
Para que o R funcione com todo seu potencial, é necessário instalar e carregar cada vez mais bibliotecas nele pelas respectivas funções install.packages() e library().
Quando está se importando dados dos principais tipos lidos pelo R (.xlsx, .csv ou .txt)
Exercício
Instruções
Para esse exercício será necessária apenas a entrega do script do R. Com os respectivos código digitados. Para questões dissertativas responda com comentários nos scripts do R utilizando do # no início de cada linha.
Bora passar raiva e tomar susto?
Questões
1. Por que devo utilizar das bibliotecas no R? Para quê servem? Qual a importância delas?
2. Qual o processo e funções utilizadas para se instalar e carregar uma biblioteca? Há mais de um tipo de forma de se baixar uma?
3. Faça a instalação de duas bibliotecas no R, a tidyverse e devtools, carregue-as.
4. Quais as etapas para se importar os dados para o R? Quais funções e bibliotecas é neccessário utilizar?
5. Quais as principais siglas das classes das colunas de um data frame e o que cada uma significa?
6. Faça a importação das três tabelas encontradas nesse link (abra o link como nova guia). Atente-se ao formato de cada um deles.
7. cheque as classes de cada um, dizendo se estão todos certos, caso não esteja, mostrar qual e dizer o porquê. Caso estejam todos certo, explique também o porque que todas as classes de cada coluna está certa.
8. Transforme a coluna CPUE de alguma das tabelas importadas na questão 6 em um número inteiro (integer ou <int>), as colunas Archosargusprobatocephalus e Cephalopholisfulva em decimal (double ou <dbl>) e as colunas Archosargusrhomboidalis e Acanthurusbahianuns em string (character ou <chr>).