Capítulo4 Importação
Aviso: Para ler a versão mais recente deste material, acesse: https://gustavojy.github.io/apostila-icdr/
Neste capítulo, iniciaremos a primeira etapa para começarmos a aplicar ciência de dados: a importação dos dados para o R. Deve-se ter em mente que um conjunto de dados pode estar em diversos formatos, seja em arquivo de texto, planilha Excel ou extensões de outros programas. Assim, para cada formato, haverá uma maneira específica de importá-los ao R. Nesta apostila, trataremos dos formatos mais usuais a serem importados: os arquivos texto e as planilhas Excel.
Como citado na seção 3.1, referente à criação de projetos no RStudio, devemos criar um projeto para cada trabalho realizado, logo, direcionar os arquivos a serem importados para o respectivo diretório, a fim de manter uma organização e facilitar o nosso acesso aos documentos necessários. Portanto, caso ainda não tenha criado um projeto, confira a seção referente ao tema.
A seguir, mostraremos como importar os dados em formato texto e planilha Excel. Para os exemplos, utilizaremos a base de dados referente a produção de cereais, extraída da FAOSTAT. Faça o download da pasta clicando aqui. Nela, estão presentes as mesmas bases de dados em diversos formatos de arquivos para que você possa acompanhar os exemplos a seguir.
4.1 Pacote readr
Com o pacote readr
, podemos ler arquivos em formato de texto, como os .txt
e os .csv
.
O readr
importa os arquivos no formato de tibbles
, análogo aos data frames (seção 3.8). No capítulo 5 veremos mais detalhes sobre as tibbles
. Neste momento, focaremos em como importar os dados para o R, para então, entendermos os diferentes formatos de dados. A seguir, estão apresentadas as funções a serem utilizadas de acordo com o formato do arquivo:
read_csv()
: arquivos separados por vírgula;read_csv2()
: arquivos separados por ponto-e-vírgula;read_tsv()
: arquivos separados por tabulação;read_delim()
: arquivos separados por um delimitador genérico. Requer o argumentodelim =
para indicar qual o caractere que separa as colunas do arquivo texto;read_table()
: arquivos com colunas separadas por espaço.
Para entendermos melhor o que são separadores, basicamente, em um arquivo texto, as colunas do Excel são delimitadas por um operador, ou seja, um separador de colunas, podendo ser vírgulas, ponto-e-vírgulas, espaços, TAB ou um delimitador genérico. Para isso, o readr
apresenta diferentes funções para conseguir importar estes arquivos no formato correto, de acordo com o tipo de arquivo e delimitador utilizado.
4.1.1 Ler arquivos texto
Importaremos arquivos texto nos formatos .csv
e .txt
.
Para ler um arquivo em .csv
, cujo separador de colunas são as vírgulas, utilizamos a função read_csv()
.
Rows: 6179 Columns: 14
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (8): Domain Code, Domain, Area, Element, Item, Unit, Flag, Flag Description
dbl (6): Area Code, Element Code, Item Code, Year Code, Year, Value
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Ao importar o arquivo .csv
, a função nos informa as dimensões do banco de dados (Rows
e Columns
), o delimitador considerado (Delimiter:
) e a classe atribuída para cada variável (coluna). Podemos perceber que das 14 variáveis, em 8 foi atribuída a classe do tipo caractere (chr (8)
) e em 6, a classe numérica (dbl (6)
).
Devemos nos atentar a este passo, pois em algumas situações, a classificação das variáveis pode estar errada ou imprópria para o uso correto nas análises. Na subseção 4.1.2, apresentaremos o argumento col_types =
para reclassificar as variáveis.
O argumento file =
representa o caminho até o arquivo. Perceba que não foi preciso indicar o diretório do arquivo, pois esse se localiza na mesma pasta do projeto em uso. Caso o arquivo esteja em uma outra pasta presente no diretório do projeto em uso, devemos especificá-la dentro do caminho até o arquivo. Exemplificaremos o processo com a pasta de nome dados_importar
.
Em algumas situações, as colunas dos arquivos .csv
são separadas por ponto-e-vírgula. Esse tipo de arquivo costuma ser utilizado quando os separadores decimais são as vírgulas, como é o caso da sintaxe utilizada no Brasil. Nesse caso, deve-se utilizar a função read_csv2()
.
Já os arquivos .txt
são lidos a partir da função read_delim()
, sendo necessário indicar qual caractere é utilizado para separar as colunas do arquivo a ser importado.
No exemplo a seguir, importaremos um arquivo .txt
, separado por tabulação, sendo que o código \t
representa a tecla TAB.
Também podemos importar o arquivo anterior a partir da função read_tsv()
, pois considera a tabulação como separador. Assim, não precisamos utilizar o argumento delim =
.
4.1.2 Outros argumentos
Alguns outros argumento estão presentes na maioria das funções de importação de arquivos do pacote readr
. Essas funções auxiliam na organização do banco de dados, pois visam arrumar alguns detalhes antes mesmo de importá-los ao R. A seguir, citaremos alguns desses:
skip =
Pula linhas do começo do arquivo antes da importação. Muito útil para evitar possíveis textos presentes no início do arquivo. Indique no argumento a quantidade de linhas a serem puladas;
comment =
No caso de arquivos que possuem algum caractere padrão que precede os comentários, usamos esse argumento para indicar qual o caractere utilizado. Por exemplo, caso o caractere #
venha antes de todos os comentários presentes em um arquivo, utilizamos o comment = "#"
para que o arquivo importado venha sem a parte comentada;
na =
Atribui valor NA
a determinado caractere especificado no argumento. Aceita um vetor como objeto do argumento. Como exemplo, atribuiremos valor NA
ao texto Brazil
, presente na coluna Area
, a fim de ilustrar o argumento.
# A tibble: 6 × 14
Domai…¹ Domain Area …² Area Eleme…³ Element Item …⁴ Item Year …⁵ Year Unit
<chr> <chr> <dbl> <chr> <dbl> <chr> <dbl> <chr> <dbl> <dbl> <chr>
1 QC Crops 21 <NA> 5312 Area h… 44 Barl… 1961 1961 ha
2 QC Crops 21 <NA> 5312 Area h… 44 Barl… 1962 1962 ha
3 QC Crops 21 <NA> 5312 Area h… 44 Barl… 1963 1963 ha
4 QC Crops 21 <NA> 5312 Area h… 44 Barl… 1964 1964 ha
5 QC Crops 21 <NA> 5312 Area h… 44 Barl… 1965 1965 ha
6 QC Crops 21 <NA> 5312 Area h… 44 Barl… 1966 1966 ha
# … with 3 more variables: Value <dbl>, Flag <chr>, `Flag Description` <chr>,
# and abbreviated variable names ¹`Domain Code`, ²`Area Code`,
# ³`Element Code`, ⁴`Item Code`, ⁵`Year Code`
col_names =
Por padrão, a função assume que a primeira linha da base de dados é o nome das colunas. Caso a base de dados não venha com os nomes das colunas, utilizamos o argumento col_names = FALSE
.
# A tibble: 6 × 14
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13
<chr> <chr> <dbl> <chr> <dbl> <chr> <dbl> <chr> <dbl> <dbl> <chr> <dbl> <chr>
1 QC Crops 21 Brazil 5312 Area… 44 Barl… 1961 1961 ha 31511 <NA>
2 QC Crops 21 Brazil 5312 Area… 44 Barl… 1962 1962 ha 28454 <NA>
3 QC Crops 21 Brazil 5312 Area… 44 Barl… 1963 1963 ha 30443 <NA>
4 QC Crops 21 Brazil 5312 Area… 44 Barl… 1964 1964 ha 31164 <NA>
5 QC Crops 21 Brazil 5312 Area… 44 Barl… 1965 1965 ha 33550 <NA>
6 QC Crops 21 Brazil 5312 Area… 44 Barl… 1966 1966 ha 41175 <NA>
# … with 1 more variable: X14 <chr>
Perceba que a função atribui nomes genéricos para as colunas, o que dificulta a identificação das variáveis presentes no banco de dados. Para isso, com o mesmo argumento col_names =
, podemos (re)nomear as colunas.
cereais_csv <- read_csv(file = "cereais.csv",
col_names = c("cd", "cod","ac", "pais", "ec",
"elemento", "ic", "cultura", "yc",
"ano", "unidade", "valor", "flag",
"descricao"),
skip = 1)
head(cereais_csv)
# A tibble: 6 × 14
cd cod ac pais ec eleme…¹ ic cultura yc ano unidade valor
<chr> <chr> <dbl> <chr> <dbl> <chr> <dbl> <chr> <dbl> <dbl> <chr> <dbl>
1 QC Crops 21 Brazil 5312 Area h… 44 Barley 1961 1961 ha 31511
2 QC Crops 21 Brazil 5312 Area h… 44 Barley 1962 1962 ha 28454
3 QC Crops 21 Brazil 5312 Area h… 44 Barley 1963 1963 ha 30443
4 QC Crops 21 Brazil 5312 Area h… 44 Barley 1964 1964 ha 31164
5 QC Crops 21 Brazil 5312 Area h… 44 Barley 1965 1965 ha 33550
6 QC Crops 21 Brazil 5312 Area h… 44 Barley 1966 1966 ha 41175
# … with 2 more variables: flag <chr>, descricao <chr>, and abbreviated
# variable name ¹elemento
Como exemplo, renomeamos as colunas com o argumento col_names = c()
, sendo que cada coluna deve ser, obrigatoriamente, renomeada ou conter o mesmo nome anterior, porém reescrito dentro do vetor, na ordem correta. Perceba que temos que pular a primeira linha (skip = 1
), pois após a renomeação, a primeira linha do data frame será o antigo nome das colunas. Por outro lado, caso a base da dados tenha vindo sem nome, o argumento skip
não precisa estar presente.
col_types =
No caso de alguma coluna ser importada com a classe errada ou imprópria, utiliza-se tal argumento para alterar a classe. Será exemplificada a transformação da variável Element
em fator e da variável Year
em números inteiros.
cereais_csv <- read_csv(file = "cereais.csv",
col_types = cols(
Element = col_factor(),
Year = col_integer()))
class(cereais_csv$Element)
class(cereais_csv$Year)
[1] "factor"
[1] "integer"
locale =
Esse argumento define opções de formatações de certas localidades, como o idioma, formato de datas e horas, separador decimal e encoding. É utilizada dentro da função read_
, tendo como objeto a função de mesmo nome, locale()
. A seguir, veremos alguns exemplos de aplicações desse argumento.
<locale>
Numbers: 123,456.78
Formats: %AD / %AT
Timezone: UTC
Encoding: UTF-8
<date_names>
Days: Sunday (Sun), Monday (Mon), Tuesday (Tue), Wednesday (Wed), Thursday
(Thu), Friday (Fri), Saturday (Sat)
Months: January (Jan), February (Feb), March (Mar), April (Apr), May (May),
June (Jun), July (Jul), August (Aug), September (Sep), October
(Oct), November (Nov), December (Dec)
AM/PM: AM/PM
<locale>
Numbers: 123,456.78
Formats: %AD / %AT
Timezone: UTC
Encoding: UTF-8
<date_names>
Days: domingo (dom), segunda-feira (seg), terça-feira (ter), quarta-feira
(qua), quinta-feira (qui), sexta-feira (sex), sábado (sáb)
Months: janeiro (jan), fevereiro (fev), março (mar), abril (abr), maio (mai),
junho (jun), julho (jul), agosto (ago), setembro (set), outubro
(out), novembro (nov), dezembro (dez)
AM/PM: AM/PM
<locale>
Numbers: 123.456,78
Formats: %AD / %AT
Timezone: UTC
Encoding: UTF-8
<date_names>
Days: Sunday (Sun), Monday (Mon), Tuesday (Tue), Wednesday (Wed), Thursday
(Thu), Friday (Fri), Saturday (Sat)
Months: January (Jan), February (Feb), March (Mar), April (Apr), May (May),
June (Jun), July (Jul), August (Aug), September (Sep), October
(Oct), November (Nov), December (Dec)
AM/PM: AM/PM
Outro problema que podemos resolver com o argumento é o encoding de arquivos. Encoding é a forma como o computador traduz os caracteres replicados no R para valores binários. Há diversos tipos de encoding, sendo que o Windows utiliza um diferente em relação ao Linux e Mac. Com isso, é comum termos problemas de encoding no Windows quando um arquivo é criado em um desses sistemas operacionais, havendo a desconfiguração de letras com acentos e outros caracteres especiais após a importação para o R. A seguir, demonstraremos o que são os problemas de encoding no Windows.
poema_drummond <- "E agora, José? A festa acabou, a luz apagou, o povo sumiu, a noite esfriou, e agora, José? (...)"
# Verificando encoding no Windows
Encoding(poema_drummond)
[1] "UTF-8"
[1] "E agora, José? A festa acabou, a luz apagou, o povo sumiu, a noite esfriou, e agora, José? (...)"
Para corrigir o encoding no Windows, devemos atribuir o encoding latin1
.
Assim, dependendo de qual sistema operacional um arquivo foi executado, devemos converter para diferentes encoding.
# Dados via Windows: usuário de Windows, converter para "latin1"
read_csv("dados_via_Windows.csv", locale = locale(encoding = "latin1"))
# Dados via Linux/Mac: usuário de Windows, converter para "UFT-8"
read_csv("dados_via_linux_mac.csv", locale = locale(encoding = "UFT-8"))
Outra funcionalidade do argumento locale =
é o de parsear valores. Esse termo, comum no meio da programação, significa arrumar ou formatar um “valor A” para um “valor B”, a partir das similaridades entre ambos.
Como exemplo, podemos converter números que estão em formato de caractere para o formato de números, efetivamente:
[1] 5 5 50 5 5
Podemos realizar o mesmo procedimento especificando o parseamento:
[1] 5
Ainda, podemos parsear datas, de acordo com o idioma:
[1] "2021-07-08"
[1] "2021-07-08"
Para conferir todos os argumentos presentes nas funções do pacote readr
, podemos utilizar a função args(nome_da_função)
. Exemplificaremos com a função read_csv()
.
function (file, col_names = TRUE, col_types = NULL, col_select = NULL,
id = NULL, locale = default_locale(), na = c("", "NA"), quoted_na = TRUE,
quote = "\"", comment = "", trim_ws = TRUE, skip = 0, n_max = Inf,
guess_max = min(1000, n_max), name_repair = "unique", num_threads = readr_threads(),
progress = show_progress(), show_col_types = should_show_types(),
skip_empty_rows = TRUE, lazy = should_read_lazy())
NULL
4.1.3 Escrever arquivos texto
Também temos a opção de salvar uma base de dados contida no R para um formato específico de arquivo. Para tanto, utilizamos a função write_
, acompanhada dos argumentos x =
e file =
, referentes, respectivamente, ao objeto a ser escrito e ao nome do arquivo a ser criado.
Nos exemplos a seguir, escreveremos dados para os formatos .csv
e .txt
. Utilizaremos os dados do mtcars
, presente no banco de dados nativo do R.
# Arquivo .csv separado por vírgula
write_csv(x = mtcars, file = "mtcars.csv")
# Arquivo .csv separado por ponto-e-vírgula
write_csv2(x = mtcars, file = "mtcars.csv")
# Arquivo .txt, separado por tabulação
write_delim(x = mtcars, file = "mtcars.txt", delim = "\t")
O arquivo escrito estará localizado no diretório referente ao projeto em atividade. Caso queira definir outro local para armazenar o arquivo, especifique-o no argumento file =
. Por exemplo, caso deseje salvar o arquivo em uma pasta chamada banco_de_dados
, localizada no diretório do projeto em uso, devemos prosseguir da seguinte maneira:
# Arquivo .csv separado por vírgula
write_csv(x = mtcars, file = "banco_de_dados/mtcars.csv")
# Arquivo .csv separado por ponto-e-vírgula
write_csv2(x = mtcars, file = "banco_de_dados/mtcars.csv")
# Arquivo .txt, separado por tabulação
write_delim(x = mtcars, file = "banco_de_dados/mtcars.txt", delim = "\t")
4.2 Pacote readxl
4.2.1 Ler arquivos Excel
O pacote readxl
lê e importa planilhas Excel em formato .xlsx
e .xls
. Para tanto, utilizamos a função read_excel()
. Esta função identifica automaticamente qual a extensão do arquivo, seja .xlsx
ou .xls
.
Neste mesmo pacote, estão presentes alguns exemplos de arquivos nos formatos .xlsx
e .xls
. Para conferi-los, utilizamos a função readxl_example()
.
[1] "clippy.xls" "clippy.xlsx" "datasets.xls" "datasets.xlsx"
[5] "deaths.xls" "deaths.xlsx" "geometry.xls" "geometry.xlsx"
[9] "type-me.xls" "type-me.xlsx"
Para utilizar um destes dados, devemos verificar em qual diretório estão localizados. Vamos exemplificar com o arquivo "deaths.xlsx"
, salvando sua localização no objeto local_arquivo
.
[1] "C:/Users/Gustavo Jun/AppData/Local/R/win-library/4.2/readxl/extdata/deaths.xlsx"
Em alguns casos, um arquivo Excel pode conter diversas planilhas. Para verificar quais planilhas estão presentes, utilizamos a função excel_sheets()
.
[1] "arts" "other"
Perceba que o arquivo Excel deaths
apresenta duas planilhas: “arts” e “other”. Para selecionar a planilha desejada, devemos utilizar o argumento sheet =
dentro da função read_excel()
. Caso não seja utilizado o argumento, por padrão, será selecionada a primeira planilha contida no arquivo.
# A tibble: 18 × 6
`Lots of people` ...2 ...3 ...4 ...5 ...6
<chr> <chr> <chr> <chr> <chr> <chr>
1 simply cannot resist writing <NA> <NA> <NA> <NA> some…
2 at the top <NA> of thei…
3 or merging <NA> <NA> <NA> cells
4 Name Profession Age Has … Date… Date…
5 David Bowie musician 69 TRUE 17175 42379
6 Carrie Fisher actor 60 TRUE 20749 42731
7 Chuck Berry musician 90 TRUE 9788 42812
8 Bill Paxton actor 61 TRUE 20226 42791
9 Prince musician 57 TRUE 21343 42481
10 Alan Rickman actor 69 FALSE 16854 42383
11 Florence Henderson actor 82 TRUE 12464 42698
12 Harper Lee author 89 FALSE 9615 42419
13 Zsa Zsa Gábor actor 99 TRUE 6247 42722
14 George Michael musician 53 FALSE 23187 42729
15 Some <NA> <NA> <NA> <NA> <NA>
16 <NA> also like to write stuff <NA> <NA> <NA> <NA>
17 <NA> <NA> at t… bott… <NA> <NA>
18 <NA> <NA> <NA> <NA> <NA> too!
# A tibble: 18 × 6
`For the sake` ...2 ...3 ...4 ...5 ...6
<chr> <chr> <chr> <chr> <chr> <chr>
1 <NA> of consistency <NA> <NA> in the data l…
2 which is really <NA> <NA> <NA> a beauti…
3 I will keep making notes <NA> <NA> <NA> up her…
4 Name Profession Age Has kids Date of birth Date o…
5 Vera Rubin scientist 88 TRUE 10432 42729
6 Mohamed Ali athlete 74 TRUE 15358 42524
7 Morley Safer journalist 84 TRUE 11635 42509
8 Fidel Castro politician 90 TRUE 9722 42699
9 Antonin Scalia lawyer 79 TRUE 13220 42413
10 Jo Cox politician 41 TRUE 27202 42537
11 Janet Reno lawyer 78 FALSE 14082 42681
12 Gwen Ifill journalist 61 FALSE 20361 42688
13 John Glenn astronaut 95 TRUE 7880 42712
14 Pat Summit coach 64 TRUE 19159 42549
15 This <NA> <NA> <NA> <NA> <NA>
16 <NA> has been really fun, but <NA> <NA> <NA> <NA>
17 we're signing <NA> <NA> <NA> <NA> <NA>
18 <NA> <NA> off <NA> now! <NA>
# A tibble: 18 × 6
`For the sake` ...2 ...3 ...4 ...5 ...6
<chr> <chr> <chr> <chr> <chr> <chr>
1 <NA> of consistency <NA> <NA> in the data l…
2 which is really <NA> <NA> <NA> a beauti…
3 I will keep making notes <NA> <NA> <NA> up her…
4 Name Profession Age Has kids Date of birth Date o…
5 Vera Rubin scientist 88 TRUE 10432 42729
6 Mohamed Ali athlete 74 TRUE 15358 42524
7 Morley Safer journalist 84 TRUE 11635 42509
8 Fidel Castro politician 90 TRUE 9722 42699
9 Antonin Scalia lawyer 79 TRUE 13220 42413
10 Jo Cox politician 41 TRUE 27202 42537
11 Janet Reno lawyer 78 FALSE 14082 42681
12 Gwen Ifill journalist 61 FALSE 20361 42688
13 John Glenn astronaut 95 TRUE 7880 42712
14 Pat Summit coach 64 TRUE 19159 42549
15 This <NA> <NA> <NA> <NA> <NA>
16 <NA> has been really fun, but <NA> <NA> <NA> <NA>
17 we're signing <NA> <NA> <NA> <NA> <NA>
18 <NA> <NA> off <NA> now! <NA>
Podemos verificar outros argumentos presentes nas funções do pacote readxl
com a função args(nome_da_função)
. Exemplificaremos com a função read_excel()
.
function (path, sheet = NULL, range = NULL, col_names = TRUE,
col_types = NULL, na = "", trim_ws = TRUE, skip = 0, n_max = Inf,
guess_max = min(1000, n_max), progress = readxl_progress(),
.name_repair = "unique")
NULL
Como se pode notar, há diversos argumentos idênticos aos demonstrados na subseção 4.1.2, referente ao pacote readr
. Contudo, na função read_excel()
não temos o argumento locale
, sendo uma falta relevante para que possamos resolver problemas relacionados à temática. Como alternativa, podemos priorizar a importação de arquivos texto ao R, ao invés de planilhas Excel, sendo facilmente resolvido salvando o Excel em formato texto, seja em .csv
ou .txt
.
4.3 Importação via URL
Uma opção prática para importar dados presentes na internet, diretamente do ambiente do RStudio, se dá via URL, ou seja, a partir do endereço web em que se localiza o banco de dados para download. Esse método permite a importação direta do banco de dados para o R, sem a necessidade de realizar o download de um arquivo para o seu computador.
Como exemplo, importaremos os dados sobre preços praticados por revendedores de combustíveis automotivos e de gás liquefeito de petróleo, no 2º semestre de 2021, coletados do Portal Brasileiro de Dados Abertos.
url <- "https://www.gov.br/anp/pt-br/centrais-de-conteudo/dados-abertos/arquivos/shpc/dsas/ca/ca-2021-02.csv"
dados_comb <- read_csv2(file = url)
head(dados_comb)
# A tibble: 6 × 16
Regiao …¹ Estad…² Munic…³ Revenda CNPJ …⁴ Nome …⁵ Numer…⁶ Compl…⁷ Bairro Cep
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 NE CE MARACA… "BEZER… 05.397… RODOVI… S/N <NA> PARQU… 6191…
2 NE CE MARACA… "BEZER… 05.397… RODOVI… S/N <NA> PARQU… 6191…
3 NE CE MARACA… "BEZER… 05.397… RODOVI… S/N <NA> PARQU… 6191…
4 NE CE MARACA… "BEZER… 05.397… RODOVI… S/N <NA> PARQU… 6191…
5 NE CE MARACA… "LUIZA… 03.602… ESTRAD… S/N <NA> KAGADO 6190…
6 NE CE MARACA… "LUIZA… 03.602… ESTRAD… S/N <NA> KAGADO 6190…
# … with 6 more variables: Produto <chr>, `Data da Coleta` <chr>,
# `Valor de Venda` <dbl>, `Valor de Compra` <lgl>, `Unidade de Medida` <chr>,
# Bandeira <chr>, and abbreviated variable names ¹`Regiao - Sigla`,
# ²`Estado - Sigla`, ³Municipio, ⁴`CNPJ da Revenda`, ⁵`Nome da Rua`,
# ⁶`Numero Rua`, ⁷Complemento
Para isso, o primeiro passo é salvar a URL em um objeto; no caso, denominamos o objeto de url
. Por se tratar de um arquivo .csv
, delimitado por ;
, utilizamos a função read_csv2()
para importar o arquivo, tendo como argumento file =
a URL salva no objeto url
.
4.4 Banco de dados
A seguir, listaremos alguns sites que fornecem uma grande variedade de base de dados públicas. Confira algum que apresente dados de seu interesse, para que você possa aplicá-los futuramente no R.
FAOSTAT: https://www.fao.org/faostat/en/#data
USDA: https://apps.fas.usda.gov/psdonline/app/index.html#/app/advQuery
DataBank: https://databank.worldbank.org/home.aspx
Kaggle: https://www.kaggle.com/datasets;
Dados do Agro: https://dados.agr.br/fonte-de-dados/
Como pudemos perceber, a importação de dados para o R não é uma tarefa difícil. Devemos nos atentar ao formato em que o arquivo está, a fim de utilizarmos a função de importação correta. Dependendo da fonte dos dados, esses podem vir com algumas configurações indesejadas, o que pode ser resolvido antes mesmo de importarmos os dados, utilizando funções e argumentos específicos para cada necessidade. Por fim, também conhecemos funções que escrevem os dados do R para diversos formatos, seja arquivos texto ou planilhas Excel.
No próximo capítulo, trataremos da etapa de arrumar os dados. Serão apresentadas as tibbles
, um tipo de data frame que utilizaremos muito, além de explorarmos as funcionalidades presentes no pacote tidyr
, a fim de obtermos uma base de dados organizada e fácil de se trabalhar.