3 R Modulo 1
RESUMO
A importação de planilhas do Excel para o ambiente de programação R é uma tarefa fundamental para análise de dados e estatísticas. Através da importação de planilhas do Excel, é possível transformar dados armazenados em formatos familiares em estruturas que podem ser manipuladas e exploradas de maneira eficaz no R. Isso permite a aplicação de diversas técnicas estatísticas e criação de visualizações informativas, contribuindo para a tomada de decisões embasadas em dados. Neste contexto, entender como importar dados do Excel para o R é um passo crucial para realizar análises de alta qualidade e obter insights significativos a partir dos conjuntos de dados disponíveis.
Apresentação
A importação de planilhas do Excel para o ambiente de programação R é uma tarefa fundamental para análise de dados e estatísticas. O R é uma linguagem de programação amplamente utilizada por cientistas de dados, pesquisadores e analistas para manipular, visualizar e modelar informações. Através da importação de planilhas do Excel, é possível transformar dados armazenados em formatos familiares em estruturas que podem ser manipuladas e exploradas de maneira eficaz no R. Isso permite a aplicação de diversas técnicas estatísticas e criação de visualizações informativas, contribuindo para a tomada de decisões embasadas em dados. Neste contexto, entender como importar dados do Excel para o R é um passo crucial para realizar análises de alta qualidade e obter insights significativos a partir dos conjuntos de dados disponíveis.
3.2 R base
- O primeiro passo é entrar na página do projeto CRAN (Comprehensive R Archive Network) (https://www.r-project.org/).
- Do lado esquerdo da página clique sobre o link CRAN abaixo de Download. 3. Uma nova página com uma série de links irá se abrir. Esses links são chamados de “espelhos” e servem para que você possa escolher o local mais próximo de onde você está para fazer o download do programa. Escolha um espelho no Brasil.
- Na seção Download and Install R, clique sobre o link
Download R for Windows
para baixar a versão para esse sistema… (MacOS??… o que é isso?)
- Clique sobre o link
base
. - Clique sobre o link
Download R 4.x.x for Windows
para fazer o download do arquivo R.exe. - A instalação segue o formato padrão de instalação de programas no Windows, e portanto não são necessários maiores detalhes.
3.3 RStudio
- Para baixar o RStudio entre no endereço (https://posit.co/download/rstudio-desktop/)
- Clique no link
Products > RStudio
- Selecione a versão Desktop.
- Clique em
DOWNLOAD RSTUDIO DESKTOP
- Será exibida uma página com a recomendação para você baixar o RStudio FREE versão mais recente - Windows
- Clicando nesse link, você irá baixar o arquivo RStudio atual (.exe)
- Depois é só clicar e instalar da forma convencional do Windows.
Após a instalação, você pode abrir o RStudio
pelo seu respectivo ícone, e o RStudio estará pronto para ser utilizado. O “R base” continuará instalado mas será acessado pelo RStudio. Não o desinstale.
3.3.1 RStudio na nuvem
Usar o RStudio Cloud (https://login.rstudio.cloud/) é uma opção para quem não quer instalar a versão para PC. O RStudio Cloud é uma plataforma online que fornece um ambiente de desenvolvimento integrado para o R, permitindo que os usuários executem análises, desenvolvam código e colaborem com outras pessoas, sem a necessidade de instalar o R e o RStudio em seus próprios computadores. É uma solução conveniente e acessível, especialmente para iniciantes ou usuários que desejam compartilhar projetos e colaborar de forma eficiente.
3.4 Sobre os dados do PPBio
Usaremos para esse tutorial dados coletados no Programa de Pesquisa em Biodiversidade - PPBio (Veja Programa de Pesquisa em Biodiversidade – PPBio). Nesta base de dados estão armazenadas informações sobre diversos grupos taxonômicos dstribuidos em diversas unidades amostrais (UA’s ou sítios), como peixes, macroinverbrebrados bentônicos, quironomídeos e zooplâncotn, além de dados do habitat, como variáveis físicas e químicas, morfologia do habitat, composição do substrato, estrutura de habitat marginal, entre outros (Figura 3.1). Essa é a matriz bruta de dados, porque os valores ainda não foram ajustados para os valores de Captura Por Unidade de Esforço (CPUE), nem foram relativizados ou transformados (Tabela 3.1).
Arquivo (.xlsx) | Tipo de matriz | Descrição | Tipo de dados |
---|---|---|---|
ppbio06c | Matriz comunitária | O arquivo ppbio06 traz os dados brutos que serão usados nas análises. A matriz de dados brutos contendo 26 localidades em estações do ano diferentes (objetos) x 35 espécies (atributos), antes de qualquer modificação. | Contagens de indivíduos com alta amplitude de variação, sugerido uso de matriz relativizada. |
ppbio06h | Matriz ambiental | O arquivo ppbio06h traz os dados brutos que serão usados nas análises. A matriz de dados brutos contendo 26 localidades em estações diferentes (objetos) x 35 variáveis ambienteis (atributos) medidas em diferentes escalas espaciais, antes de qualquer modificação. | Unidades de medição diferentes (cm, m, °C, mg/L, etc.), com uma alta amplitude de variação, sugerido uso de matriz transformada e/ou reescalada. |
ppbio06 | Matriz comunitária | O arquivo ppbio06 traz os dados brutos que serão usados nessa análise. A matriz de dados brutos contendo 26 locais/ocasiões (objetos) x 35 espécies (atributos), antes de qualquer modificação. | Contagens de indivíduos com alta amplitude de variação, sugerido uso de matriz relativizada. |
ppbio06cpue | Matriz comunitária | O arquivo ppbio06cpue traz os valores depois de terem sidos ajustados pela Captura Por Unidade de Esforço (CPUE), onde o número de indivíduos de cada espécie em uma determinada UA é dividido pelo esforço de captura daquela UA. Isso significa que os dados foram relativizados pela CPUE. A matriz de dados brutos contendo 26 localidades em estações do ano diferentes (objetos) x 35 espécies (atributos), antes de qualquer modificação. | Densidades de indivíduos (no. de indivíduos por Unidade de Esforço de Captura) com alta amplitude de variação, sugerido uso de matriz relativizada. |
A planilha ppbio
contém o delineamento amostral de um dos estudos do Projeto PPBio (Figura 3.2. Nas linhas são apresentadas as abreviações dos nomes das unidades amostrais (UA’s) e nas colunas são apresentados os nomes abreviados das espécies - temos portando uma matriz comunitária (3.1. No corpo da planilha temos os valores para o tipo de dados amostrado. Quantitativo, semi-quatitativo ou qualitativo.
Qual desses tipos de dados você acha que é apresentado na planilha?
Várias das espécies nessa matriz tem grande importância ecológica, como é o caso de Astyanax bimaculatus 1 (Figura 3.3), que é muito comum em rios intermitentes e serve de alimento para predadores maiores como a espécie Hoplias malabaricus 2 (Figura 3.4).
3.5 Importando a planilha de trabalho
Para começar a usar o R e analisar os dados do Projeto PPBio, abra o RStudio, verifique sua interface (3.5) e siga as instruções a seguir.
3.6 Mensagens de erro e avisos no R
No contexto da linguagem de programação R, mensagens de erro (errors) e mensagens de aviso (warnings) que aparecem em vermelho no painel de console. Elas são formas de feedback do sistema que indicam problemas ou situações potencialmente problemáticas durante a execução do código. Aqui está uma breve explicação de cada um:
- Erro (Error):
- Um erro ocorre quando algo no código não está correto ou não pode ser executado como esperado.
- Isso pode ser causado por sintaxe incorreta, uso incorreto de funções, operações inválidas, referências a objetos que não existem, entre outros problemas.
- Quando ocorre um erro, a execução do código é interrompida e uma mensagem de erro é exibida no console em vermelho, indicando o tipo de erro e, muitas vezes, a linha onde ocorreu.
- Aviso (Warning):
- Não indica erro. Um aviso é emitido quando algo no código pode resultar em um comportamento indesejado ou em resultados inesperados, mas não interrompe necessariamente a execução do código.
- Os avisos geralmente indicam situações que merecem atenção, como conversões de tipos de dados que podem perder informações ou funções que estão sendo usadas de maneira que pode levar a resultados questionáveis.
- Os avisos são exibidos em vermelho no console e fornecem informações sobre a natureza do aviso e, possivelmente, como abordá-lo.
É importante prestar atenção a mensagens de erro e avisos, pois eles fornecem insights sobre problemas em seu código ou potenciais fontes de comportamento inesperado. Resolver erros é fundamental para que o código funcione conforme o esperado. Embora os avisos não interrompam a execução, investigá-los pode ajudar a evitar problemas futuros ou melhorar a qualidade do código.
3.7 Organização básica
No ambiente do RStudio no painel de edição de código execute (Ctrl+Enter
com o teclado ou Run
no editor de código) os comandos a seguir, para instalar os pacotes necessários para este módulo.
install.packages("readxl") #importa arquivos do excel
E em seguida,
library(readxl)
Os códigos acima, são usados para instalar e carregar os pacotes necessários para este módulo. Esses códigos são comandos para instalar pacotes no R. Um pacote é uma coleção de funções, dados e documentação que ampliam as capacidades do R (R CRAN) (R. C. Team 2017), e RStudio (R. S. Team 2022). No exemplo acima, o pacote readxl
permite ler e escrever arquivos Excel no R.
Para instalar um pacote no R, você precisa usar a função install.packages()
. Depois de instalar um pacote, você precisa carregá-lo na sua sessão R com a função library()
.
Por exemplo, para carregar o pacote readxl
, você precisa executar a função library(readxl)
. Isso irá permitir que você use as funções do pacote na sua sessão R. Você precisa carregar um pacote toda vez que iniciar uma nova sessão R e quiser usar um pacote instalado.
Agora vamos definir o diretório de trabalho. Esse código é usado para obter e definir o diretório de trabalho atual no R. O comando getwd()
retorna o caminho do diretório onde o R está lendo e salvando arquivos. O comando setwd()
muda esse diretório de trabalho para o caminho especificado entre aspas. No seu caso, você deve ajustar o caminho para o seu próprio diretório de trabalho. Lembre de usar a barra “/” entre os diretórios. E não a contra-barra “\”.
Usaremos uma matriz multivariada (sítios x espécies, matriz comunitária) do Projeto PPBio chamada ppbio**.xlsx que está no diretório “C:/Meu/Diretório/De/Trabalho/Planilha.xlsx”
Note que o sómbolo #
em programação R significa que o texto que vem depois dele é um comentário e não será executado pelo programa. Isso é útil para explicar o código ou deixar anotações.
Ajuste a segunda linha do código abaixo para refletir “C:/Seu/Diretório/De/Trabalho/Planilha.xlsx”.
Definindo o diretório de trabalho e installando os pacotes necessários:
getwd()
setwd("C:/Seu/Diretório/De/Trabalho")
Alternativamente você pode ir na barra de tarefas e escolhes as opções:\SESSION -> SET WORKING DIRECTORY -> CHOOSE DIRECTORY
3.8 Importando a planilha
library(readxl)
<- read_excel("D:/Elvio/OneDrive/Disciplinas/_EcoNumerica/5.Matrizes/ppbio06-peixes.xlsx",
ppbio06 sheet = "Sheet1",
na = "NA")
str(ppbio06)
class(ppbio06)
Com essas linhas de código a primeira coluna da matriz importada apresenta texto. Não queremos assim porque vamos fazer cálculos matemáticos na matriz.
Resolvemos o problema com mais algumas linhas de código.
<- as.data.frame(ppbio06)
ppbio06 class(ppbio06)
rownames(ppbio06) <- ppbio06[,1] #tem que ser um df
1] <- NULL ppbio06[,
Ou podemos usar esse novo pacote de importação de arquivos .xlsx para o R.
#install.packages("openxlsx")
library(openxlsx)
## Warning: package 'openxlsx' was built under R version 4.3.2
<- read.xlsx("D:/Elvio/OneDrive/Disciplinas/_EcoNumerica/5.Matrizes/ppbio06-peixes.xlsx",
ppbio rowNames = T,
colNames = T,
sheet = "Sheet1")
str(ppbio)
class(ppbio)
<- as.matrix(ppbio) #lê ppbio como uma matriz
ppbio_ma str(ppbio_ma)
class(ppbio_ma)
#ppbio
#ppbio_ma
Agora podemos exportar os dados como uma matriz de dados em formato de valores separados por vírgula (.csv)
.
write.table(ppbio, "ppbiocsv.txt", append = F, quote = T, ";", row.names = T)
<- getwd()
dir shell.exec(dir) #abre o diretorio de trabalho no Windows Explorer
Podemos abrir o arquivo .csv criado ppbiocsv.txt
usando os códigos abaixo.
<- read.csv("ppbiocsv.txt",
ppbiocsv sep = ";", dec = ",", #definimos o dígito separador
header = T,
row.names = 1,
na.strings = NA)
str(ppbiocsv)
ppbiocsv
Lembre de prestar atenção no dígito separador de decimais ” , ” ou ” . ” . Além disso, só estaamos usando ppbio**.***
porque o diretório de trabalho ja fo definido no início. Se não deveríamos estar usando C:/Seu/Diretório/De/Trabalho/ppbio**.***
Alguns comandos para exibir a planilha são “case-sensitive” (ignore.case(object))
#View(ppbio)
print(ppbio)
ppbiostr(ppbio)
#?View
#?view
#?remove
3.8.1 Outra forma de achar e importar uma planilha
Essa forma é desaconselhavel porque é demorada e sujeita a erros. Além de precisar ser refeita sempre que se quiser abrir uma nova planilha ou reabrir a última planilha importada. Veja o tópico Prefira sempre códigos e scripts do que mouse e menus de janelas no R
getwd()
<- read.xlsx(file.choose(), #abre o windows explorer
ppbio rowNames = T, colNames = T,
sheet = "Sheet1")
3.9 Importando .ods
do LibreOffice Calc
#install.packages("readODS")
library(readODS)
## Warning: package 'readODS' was built under R version 4.3.3
<- read_ods("D:/Elvio/OneDrive/Disciplinas/_EcoNumerica/5.Matrizes/rebio23-zoopl_5-20.ods",
rebio23.ods row_names = TRUE,
col_names = TRUE,
sheet = "densidade_hab_indL",
as_tibble = FALSE,
na = "n/a") # porque existem celulas vazias (n/a)
<- na.omit(rebio23.ods)
rebio23.ods str(rebio23.ods)
class(rebio23.ods)
<- as.matrix(rebio23.ods) #lê como uma matriz
rebio23.ods_ma str(rebio23.ods_ma)
class(rebio23.ods_ma)
#rebio23.ods
#rebio23.ods_ma
3.9.1 Colunas com o mesmo nome
Em algumas situações é necessário encontrar colunas com o mesmo nome em um conjunto de dados e soma-las ou fazer sua média, como no exemplo da Tabela ??. Isso pode ocorrer quando se está trabalhando com dados de várias fontes e é necessário combinar esses diferentes conjuntos de dados.
Considere por exemplo um cenário onde se está trabalhando em um projeto de análise de dados ecológicos e você recebeu conjuntos de dados de diferentes locais de amostragens enviados por diferentes pesquisadores, e cada pesquiador enviou seu conjunto de dados que contém informações sobre as mesmas espécies (ou variáveis ambientais) (Tabela ??). Devido a diferentes sistemas de registro ou a falta de comunicação entre os pesquisadores, pode haver repetição nos nomes das colunas.
library("knitr")
<- data.frame(
df Rato = c(1, 2, 3),
Musaranho = c(4, 5, 6),
Rato = c(7, 8, 9), #nome duplicado
Esquilo = c(0, 0, 1),
= c(1, 1, 0),
Ratão Castor = c(1, 0, 0),
= c(11, 12, 13),
Tâmia Marmota = c(1, 2, 0),
Castor = c(2, 1, 1), #nome duplicado
check.names = FALSE
)#kable(df, caption = "Dados de mamíferos roedores")
df
## Rato Musaranho Rato Esquilo Ratão Castor Tâmia Marmota Castor
## 1 1 4 7 0 1 1 11 1 2
## 2 2 5 8 0 1 0 12 2 1
## 3 3 6 9 1 0 0 13 0 1
Por exemplo, no estudo sobre mamíferos roedores acima (Tabela ??), quando se combina o conjunto geral de dados para realizar uma análise abrangente, depara-se com colunas duplicadas, onde a matriz com o conjunto total de dados contém espécies repetidas.
Nesse caso, encontrar e resolver colunas com o mesmo nome é crucial para garantir a integridade dos dados e realizar uma análise precisa. Você deve consolidar essas colunas duplicadas, somando-as ou fazendo sua média.
# Achando colunas com nomes duplicados
<- names(df)[duplicated(names(df))]
dup_cols # Somando colunas com o mesmo nome
for (col_name in unique(dup_cols)) {
# Get indices of columns with the same name
<- which(names(df) == col_name)
col_indices # Sum columns with the same name
<- rowSums(df[, col_indices, drop = FALSE])
df[[col_name]]
}# Remove as colunas duplicadas originais e mantem as novas colunas que são a soma ("except for the first occurrence")
<- df[, !duplicated(names(df))]
df # Mostra a nova tabela com colunas repetidas somadas
print(df)
## Rato Musaranho Esquilo Ratão Castor Tâmia Marmota
## 1 8 4 0 1 3 11 1
## 2 10 5 0 1 1 12 2
## 3 12 6 1 0 1 13 0
3.9.2 Removendo linhas ou coluns por nome
#Colunas
<- subset(df, select = -Lec.mono) #escolhendo uma coluna pelo nome
df
#Linhas
<- c("ST20")
del_rows
del_rows<- df[!(row.names(entorno) %in% c(del_rows)),]
m_part m_part
3.9.3 Criando uma matriz de médias
Por razões diferentes o precedimento anterior pode vir a ser necessário de ser aplicado às linhas. Por exemplo, quando se quer somar ou fazer a média de amostras diferentes do mesmo ambiente de coleta. Veja a matriz abaixo.
<- read.table(text = "
data Sp1 Sp2 Sp3 Sp4 Sp5 Sp6 Sp7 Sp8
A1 0 0 0 0 0 0 6 1
A2 0 0 0 2 0 0 10 2
B1 93 2 0 177 0 260 2 5
B2 0 4 0 8 0 0 83 7
C1 0 0 0 0 1 0 0 1
C2 0 0 1 0 0 1 0 1
C3 0 2 0 2 0 0 0 1
", header = TRUE, row.names = 1)
data
## Sp1 Sp2 Sp3 Sp4 Sp5 Sp6 Sp7 Sp8
## A1 0 0 0 0 0 0 6 1
## A2 0 0 0 2 0 0 10 2
## B1 93 2 0 177 0 260 2 5
## B2 0 4 0 8 0 0 83 7
## C1 0 0 0 0 1 0 0 1
## C2 0 0 1 0 0 1 0 1
## C3 0 2 0 2 0 0 0 1
library("tidyverse")
#Inserindo coluna para agrupamentos
nrow(data); ncol(data) #no. de N colunas x M linhas
<- cbind(Grupos = rownames(data), data)
data_g
data_g
<- substr(data_g[, 1], 1,3)
grps
grps
<- data_g %>% mutate(Grupos=c(grps))
data_g
#data_avg <- aggregate(data_g[, 9:9], list(data_g$Grupos), mean)
#data_avg
<- data_g %>%
data_avg group_by(Grupos) %>%
summarise(across(.cols = everything(), ~ mean(.x, na.rm = TRUE)))
data_avg
<- data_g %>%
data_dp group_by(Grupos) %>%
summarise(across(.cols = everything(), list(mean = mean, sd = sd)))
#?across
data_dp
#Primeira coluna para nomes das linhas
<- as.data.frame(data_dp)
data_dp class(data_dp)
rownames(data_dp) <- data_dp[,1]
1] <- NULL
data_dp[,<- round(data_dp, 1)
data_dp
data_dp#Salvando a matriz
write.table(data_dp,
"data_dp.csv",
append = F,
quote = TRUE,
sep = ";", dec = ",",
row.names = T)
<- read.csv("data_dp.csv",
data_dp_csv sep = ";", dec = ",",
header = T,
row.names = 1,
na.strings = NA)
Apêndices
Sites consultados
[https://youtu.be/U6ksXvvY6Q0]
[https://youtu.be/a7EJE_2mtGk]
Script limpo
Aqui apresento o scrip na íntegra sem os textos ou outros comentários. Você pode copiar e colar no R para executa-lo. Lembre de remover os #
ou ##
caso necessite executar essas linhas.
## install.packages("readxl") #importa arquivos do excel
## library(readxl)
## getwd()
## setwd("C:/Seu/Diretório/De/Trabalho")
library(readxl)
<- read_excel("D:/Elvio/OneDrive/Disciplinas/_EcoNumerica/5.Matrizes/ppbio06.xlsx",
ppbio06 sheet = "Sheet1",
na = "NA")
str(ppbio06)
class(ppbio06)
<- as.data.frame(ppbio06)
ppbio06 class(ppbio06)
rownames(ppbio06) <- ppbio06[,1] #tem que ser um df
1] <- NULL
ppbio06[,#install.packages("openxlsx")
library(openxlsx)
<- read.xlsx("D:/Elvio/OneDrive/Disciplinas/_EcoNumerica/5.Matrizes/bentos06.xlsx",
ppbio rowNames = T,
colNames = T,
sheet = "contagem")
str(ppbio)
class(ppbio)
<- as.matrix(ppbio) #lê ppbio como uma matriz
ppbio_ma str(ppbio_ma)
class(ppbio_ma)
#ppbio
#ppbio_ma
## write.table(ppbio, "ppbiocsv.txt", append = F, quote = T, ";", row.names = T)
## dir <- getwd()
## shell.exec(dir) #abre o diretorio de trabalho no Windows Explorer
## ppbiocsv <- read.csv("ppbiocsv.txt",
## sep = ";", dec = ",", #definimos o dígito separador
## header = T,
## row.names = 1,
## na.strings = NA)
## str(ppbiocsv)
## ppbiocsv
## #View(ppbio)
## print(ppbio)
## ppbio
## str(ppbio)
## #?View
## #?view
## #?remove
## getwd()
## ppbio <- read.xlsx(file.choose(), #abre o windows explorer
## rowNames = T, colNames = T,
## sheet = "Sheet1")
Bibliografia
O RStudio Cloud é uma plataforma online que fornece um ambiente de desenvolvimento integrado para o R, permitindo que os usuários executem análises, desenvolvam código e colaborem com outras pessoas, sem a necessidade de instalar o R e o RStudio em seus próprios computadores. É uma solução conveniente e acessível, especialmente para iniciantes ou usuários que desejam compartilhar projetos e colaborar de forma eficiente.↩︎
A palavra “scree” tem origem na língua inglesa e é uma abreviação de “screening”, que significa triagem ou seleção. Nesse contexto, o termo “scree plot” é uma representação gráfica utilizada para auxiliar na triagem ou seleção dos componentes principais ou fatores mais relevantes em uma análise multivariada.↩︎