Aula 10 – Curso de R – Leitura de arquivo com scan e read.fwf
Aula 10 – Curso de programação em R
Leitura de arquivo no R com scan e read.fwf
Endereço para baixar os arquivos e o script:
https://github.com/toticavalcanti/curso_r
Antes de começar, quero deixar meu link de afiliados na Hostinger, tá valendo a pena, dêem uma olhada: Hostinger
Dêem um joinha ? na página do Código Fluente no Facebook
Facebook
Meu link de referidos na digitalocean pra vocês.
Quem se cadastrar por esse link, ganha $100.00 dólares de crédito na digitalocean:
Digital Ocean
Esse outro é da one.com:
One.com
A função scan() é mais flexível do que read.table.
Baixe o arquivo no link abaixo, esse arquivo é do portal da transparência:
https://github.com/toticavalcanti/curso_r/blob/master/20180901_SPU_ImoveisFuncionais_ListaPermissionarios.csv
Quem quiser dá uma olhada no portal, acesse:
http://www.portaltransparencia.gov.br/download-de-dados/
Lá tem o mapa dos dados.
A origem dos dados:
- Ministério das Relações Exteriores (MRE)
- Secretaria do Patrimônio da União (SPU)
- Ministério da Defesa (MD)
- Procuradoria da República (PR)
Entre outras informações.
Coloque o arquivo baixado na pasta de trabalho do R.
Limpe a memória:
rm (list = ls ())
Vamos definir nossa pasta de trabalho, o local onde colocamos esse arquivo baixado.
#Define o path para ler os arquivos .csv ou qualquer outro formato
setwd("\caminho\para\pasta\suaPasta")
Vamos ler os dados desse arquivo usando o scan():
mydata <- scan("20180901_SPU_ImoveisFuncionais_ListaPermissionarios.csv",
sep = ";",
what = list("", "", "", "", ""))
lê os dados do arquivo 20180901_SPU_ImoveisFuncionais_ListaPermissionarios.csv usando o separador ” ; ” onde os cinco campos são strings.
O scan() pode ser usada para criar objetos, vetores, matrizes, data frames, listas, etc.
No exemplo acima, 20180901_SPU_ImoveisFuncionais_ListaPermissionarios.csv é uma lista de cinco strings.
Por padrão, se você omitir o what = list e os tipos, o scan() cria um vetor numérico.
Se os dados lidos não corresponderem ao(s) modo(s) esperado (por padrão, ou especificado), uma mensagem de erro é retornada. As opções são as seguintes.
scan(file = "", what = double(0), nmax = -1, n = -1, sep = "", quote = if (sep=="\n") "" else "'\"", dec = ".", skip = 0, nlines = 0, na.strings = "NA", flush = FALSE, fill = FALSE, strip.white = FALSE, quiet = FALSE, blank.lines.skip = TRUE, multi.line = TRUE, comment.char = "", allowEscapes = TRUE)read.table(file, header = FALSE, sep = "", quote = "\"'", dec = ".", row.names, col.names, as.is = FALSE, na.strings = "NA", colClasses = NA, nrows = -1, skip = 0, check.names = TRUE, fill = !blank.lines.skip, strip.white = FALSE, blank.lines.skip = TRUE, comment.char = "#")
file | O nome do arquivo (dentro de “”), possivelmente com seu caminho (o símbolo \ não é permitido e deve ser substituído por /, mesmo no Windows), ou um acesso remoto a um arquivo do tipo URL (http: // …); se file = “”, os dados podem ser introduzidos via teclado (a entrada é terminada por uma linha em branco) |
what | Especifica o(s) modo(s) dos dados (numéricos por padrão) |
nmax | Número de dados a serem lidos, ou, se for uma lista, o número de linhas a serem lidas (por padrão, a varredura lê os dados até o final do arquivo) |
n | Número de dados a serem lidos (por padrão, sem limite) |
sep | Separador de campo usado no arquivo |
quote | Caracteres usados para citar as variáveis no modo caractere |
dec | Caractere usado para o ponto decimal |
skip | Número de linhas a serem puladas antes de ler os dados |
nlines | Número de linhas a serem lidas |
na.string | o valor dado aos dados sem valor(convertido para NA) |
flush | Se TRUE, o scan vai para a próxima linha quando o número de |
fill | Se TRUE e todas as linhas não tiverem o mesmo número de variáveis, “blanks” serão adicionados |
strip.white | Se TRUE, exclui espaços extras antes e depois das variáveis caracteres(char) |
quiet | Se FALSE, exibe uma linha mostrando quais campos foram lidos. |
blank.lines.skip | Se TRUE, ignora linhas em branco |
multi.line | Se for uma lista, especifica se as variáveis estão em uma única linha no arquivo |
comment.char | Caractere que define os comentários no arquivo de dados, o restante da linha após esse caractere é ignorado (o padrão é desativado) |
allowEscapes | Especifica se o estilo C de escape (por exemplo, ‘\t ‘) vai ser processado (por padrão) ou lido como textual. |
A função read.fwf pode ser usada para ler em um arquivo alguns dados em formato de largura fixa:
read.fwf(file, widths, header = FALSE, sep = "\t", as.is = FALSE, skip = 0, row.names, col.names, n = -1, buffersize = 2000, ...)
As opções são as mesmas que para read.table (), exceto as larguras que especificam a largura dos campos. (buffersize é o número máximo de linhas lidas simultaneamente).
Por exemplo, se um arquivo chamado data.txt tiver os dados:
A1.501.2
A1.551.3
B1.601.4
B1.651.5
C1.701.6
C1.751.7
Baixe o arquivo com esses dados:
https://github.com/toticavalcanti/curso_r/blob/master/data.txt
Pode-se ler os dados com o seguinte comando:
mydata02 <- read.fwf("data.txt", width = c(1, 4, 3))
mydata02
V1 V2 V3
1 A 1.50 1.2
2 A 1.55 1.3
3 B 1.60 1.4
4 B 1.65 1.5
5 C 1.70 1.6
6 C 1.75 1.7
Veja que a largura do primeiro dado de uma linha é do tamanho 1, é só um caracter, o segundo dado de uma linha é de tamanho 4, 1 dígito seguido de uma ponto e mais dois dígitos e o último dado de uma linha é de tamanho 3, um dígito seguido de um ponto e mais um dígito.
Com isso encerramos mais essa aula do curso de R, na próxima veremos a função write.table.