Importando arquivos

Um dos formatos mais utilizados para disponibilização de dados são os arquivos CSV (comma-separated values). Seus valores são separados por vígulas (,) - muitas vezes pode vir separado por ponto e vŕgula (;) De início utilizaremos os pacotes básicos do R para leitura de arquivos CSV, no entanto vale mencionar que existem outros pacotes que são bons para leitura de arquivos CSV como: readr e data.table. Também temos pacotes que lê arquivos em outros formatos como o pacote foreing.

Para poder ler o arquivo é necessário que o mesmo esteja no mesmo diretório de trabalho que está trabalhando.

# Estou chamando a tabela "CHEFES.csv" e afirmando que a primeira linha é o cabeçalho e que o separador é ponto e vírgula (;). Lembrando que, se você salvou o seu arquivo do Excel utilizando um teclado inglês o separador será vírgula, porém se utilizou um teclado em português seu separador será ponto e vírgula.

# Algumas formas de importas seus dados
chefes <- read.table(file="CHEFESmm.csv", header = T, sep = ";")
chefes.2 <- read.csv("CHEFESmm.csv", header = T, sep = ";")
chefes.3 <- read.csv2("CHEFESmm.csv")

View(chefes) # visualiza os dados
str(chefes) # visualiza o tipo de cada variável
## 'data.frame':    11 obs. of  9 variables:
##  $ salário      : Factor w/ 7 levels "15.000,00","3.000,00",..: 4 3 5 6 6 6 1 4 7 1 ...
##  $ formação     : Factor w/ 3 levels "médio","pós-graduação",..: 3 2 3 1 3 3 2 1 3 3 ...
##  $ carga.horária: Factor w/ 4 levels "4,0","6,0","6,8",..: 4 4 4 2 2 2 4 4 3 2 ...
##  $ qtde.pratos  : int  15 25 10 15 18 23 20 13 12 16 ...
##  $ vinhos       : Factor w/ 2 levels "não","sim": 1 2 1 1 1 1 2 2 2 1 ...
##  $ capacidade   : int  100 100 70 80 300 150 100 35 50 90 ...
##  $ localização  : Factor w/ 6 levels "aeroportuário",..: 4 4 3 1 5 3 2 3 2 2 ...
##  $ tipo.cardápio: Factor w/ 10 levels "argentino","carnes",..: 7 3 9 1 2 6 4 1 8 5 ...
##  $ lucratividade: Factor w/ 7 levels "-15.000,00","-2.000,00",..: 4 5 1 6 7 6 7 4 2 3 ...

Vamos utilizar a função read_delim() do pacote readr para ler arquivos com qualquer tipo de separador.

De início vamos instalar o pacote “redr”

# Instalando o pacote
install.packages("readr")
## Installing package into '/home/jean/R/x86_64-pc-linux-gnu-library/3.4'
## (as 'lib' is unspecified)
# Carregando o pacote
library(readr)

Agora vamos importar um arquivo zipado e atribuir ao objeto chefes.zip (não esquece que para acessar o arquivo ele tem que estar no diretório de trabalho).

chefes.zip <- read_delim("CHEFESmm.zip", delim = ";")
## Parsed with column specification:
## cols(
##   salário = col_number(),
##   formação = col_character(),
##   `carga horária` = col_number(),
##   `qtde pratos` = col_double(),
##   vinhos = col_character(),
##   capacidade = col_double(),
##   localização = col_character(),
##   `tipo cardápio` = col_character(),
##   lucratividade = col_number()
## )
chefes.zip
## # A tibble: 11 x 9
##    salário formação `carga horária` `qtde pratos` vinhos capacidade
##      <dbl> <chr>              <dbl>         <dbl> <chr>       <dbl>
##  1     7   superior              80            15 não           100
##  2    30   pós-gra…              80            25 sim           100
##  3     7.5 superior              80            10 não            70
##  4     8   médio                 60            15 não            80
##  5     8   superior              60            18 não           300
##  6     8   superior              60            23 não           150
##  7    15   pós-gra…              80            20 sim           100
##  8     7   médio                 80            13 sim            35
##  9     8.5 superior              68            12 sim            50
## 10    15   superior              60            16 não            90
## 11     3   médio                 40            10 não            50
## # … with 3 more variables: localização <chr>, `tipo cardápio` <chr>,
## #   lucratividade <dbl>

Importando arquivos TXT

Para importação de arquivos .txt também pode ser utilizada a função read_lim(). Vamos importar as quatro primeiras linhas do arquivo.

chefes.txt <- read_delim("CHEFESmm.txt", delim = ";", n_max = 4,)
## Parsed with column specification:
## cols(
##   salário = col_number(),
##   formação = col_character(),
##   `carga horária` = col_number(),
##   `qtde pratos` = col_double(),
##   vinhos = col_character(),
##   capacidade = col_double(),
##   localização = col_character(),
##   `tipo cardápio` = col_character(),
##   lucratividade = col_number()
## )

Importando arquivos xlsx

Podemos importar arquivos do Excel (.xlsx) para isso utiizaremos o pacote “readxl”.

# Instalando o pacote
install.packages("readxl")
## Installing package into '/home/jean/R/x86_64-pc-linux-gnu-library/3.4'
## (as 'lib' is unspecified)
## Warning in download.file(url, destfile, method, mode = "wb", ...):
## downloaded length 1178760 != reported length 2056165
## Warning in download.file(url, destfile, method, mode = "wb", ...): URL
## 'https://cloud.r-project.org/src/contrib/readxl_1.3.1.tar.gz': status was
## 'Failure when receiving data from the peer'
## Error in download.file(url, destfile, method, mode = "wb", ...) : 
##   download from 'https://cloud.r-project.org/src/contrib/readxl_1.3.1.tar.gz' failed
## Warning in download.packages(pkgs, destdir = tmpd, available = available, :
## download of package 'readxl' failed
# Carregando o pacote
library(readxl)

Utilizaremos a função read_xlsx()

chefes.xlsx <- read_xlsx("teste.xlsx")
chefes.xlsx
## # A tibble: 11 x 9
##    salário formação `carga horária` `qtde pratos` vinhos capacidade
##      <dbl> <chr>              <dbl>         <dbl> <chr>       <dbl>
##  1    7000 superior             8              15 não           100
##  2   30000 pós-gra…             8              25 sim           100
##  3    7500 superior             8              10 não            70
##  4    8000 médio                6              15 não            80
##  5    8000 superior             6              18 não           300
##  6    8000 superior             6              23 não           150
##  7   15000 pós-gra…             8              20 sim           100
##  8    7000 médio                8              13 sim            35
##  9    8500 superior             6.8            12 sim            50
## 10   15000 superior             6              16 não            90
## 11    3000 médio                4              10 não            50
## # … with 3 more variables: localização <chr>, `tipo cardápio` <chr>,
## #   lucratividade <dbl>

Importando grandes quantidade de dados

Para importação de grandes quantidades de dados utilizaremos a função fread() do pacote de “data.table”.

install.packages("data.table")
## Installing package into '/home/jean/R/x86_64-pc-linux-gnu-library/3.4'
## (as 'lib' is unspecified)
## Warning in download.file(url, destfile, method, mode = "wb", ...): URL
## 'https://cloud.r-project.org/src/contrib/data.table_1.12.0.tar.gz': status
## was 'Couldn't resolve host name'
## Error in download.file(url, destfile, method, mode = "wb", ...) : 
##   não foi possível abrir a URL 'https://cloud.r-project.org/src/contrib/data.table_1.12.0.tar.gz'
## Warning in download.packages(pkgs, destdir = tmpd, available = available, :
## download of package 'data.table' failed
library(data.table)

Utilizaremos a seguinte função:

arq.gr <- fread("arquivogrande.txt")
## Warning in fread("arquivogrande.txt"): Detected 1 column names but the data
## has 4 columns (i.e. invalid file). Added 3 extra default column names at
## the end.
head(arq.gr) # visualizar as seis primeiras linhas 
##    vers\xe3o=5 COD_MUN, NOME_MUN, DT_INI, DT_FIM          V2      V3 V4
## 1:                                       5300108 Bras\xedlia 1012009 NA
## 2:                                       1400050 Alto Alegre 1012009 NA
## 3:                                       1400027     Amajari 1012009 NA
## 4:                                       1400100   Boa Vista 1012009 NA
## 5:                                       1400159      Bonfim 1012009 NA
## 6:                                       1400175    Cant\xe1 1012009 NA
dim(arq.gr) # Dimensões do dataframe
## [1] 5572    4

A função fread irá retornar por padrão um data table, se quisermos que retorne uma dataframe alteramos o argumento data.table para FALSE.

Exportando arquivos

O R consegue exportar dados num formato ASCII (arquivo de texto, delimitado por espaço, vírgula, ponto-e-vírgula, tabulação, …).

A função que iremos utilizar é write.table() ela está contida no pacote base ao qual é instalada junto com a instalação do R.

Vamos começar por exportar nossos dados por tabulação.

write.table(chefes, file = "chefesteste.dat", sep = "\t", row.names = FALSE, quote = FALSE)
# Primeiro argumento é o objeto a ser exportado.
# Segundo argumento é nome do arquivo.
# Terceiro argumento é o tipo de delimitador - \t (tabulação).
# Quarto argumento significa que as linhas desse objeto não tem nome e assim previne o R de colocar números como nome.
# Quinto argumento indica ao R que as variáveis do tipo caracter devem ser exportadas sem estar entre aspas.

Outra forma de exportas dados é no formato CSV

# Forma 01
write.csv(chefes, file = "chefesteste.csv", row.names = F, quote = F)

# Forma 02
write.csv2(chefes, file = "chefesteste2.csv", row.names = F, quote = F)

Se quisermos salvar em outro diretório, faremos da seguinte forma:

# Informe o caminho do diretório que você deseja exportar o arquivo.
write.csv2(chefes, file = "/home/jean/Documentos/Materia_R/Treinamento/Roteiros_das_aulas/Pratica_03/chefesteste2.csv", row.names = F, quote = F)