Programação em R - Parte 7 (Lendo Dados de Arquivos)

Programação em R - Aprenda Analtics, Big Data & Ciência de Dados


Confira todos os textos da série Programação em R:


Os objetos de dados em grandes volumes geralmente são lidos como valores de arquivos externos em vez de inseridos durante uma sessão R via teclado. As opções de entrada R são simples e seus requisitos são bem rígidos, até mesmo inflexíveis. Existe uma clara presunção pelos designers do R de que você poderá modificar seus arquivos de entrada usando outras ferramentas, como editores de arquivos, para atender aos requisitos de R. Geralmente, isso é muito simples.

Se as variáveis devem ser mantidas principalmente em data frames, como sugerimos fortemente, um data frame pode ser lido diretamente com a função read.table().

Para obter mais detalhes sobre a importação de dados em R e também para exportação de dados, consulte o manual R para importar/exportar dados.

A função read.table()


Para ler um data frame completo diretamente, o arquivo externo normalmente terá uma forma especial.
  • A primeira linha do arquivo deve ter um nome para cada variável no data frame (cabeçalho);
  • Cada linha adicional do arquivo tem como primeiro item um rótulo de linha e os valores para cada variável.
Se o arquivo tiver um item menor em sua primeira linha do que na segunda, este arranjo é presumido como correto e os ajustes necessários são feitos automaticamente. Portanto, as primeiras linhas de um arquivo a serem lidas como um data frame podem parecer como as seguintes:

Arquivo de entrada com nomes e rótulos de linha:

Preço Chão Área Quart. Idade Cent.heat
01 52.00 111.0 830 5 6.2 não
02 54.75 128.0 710 5 7.5 não
03 57.50 101.0 1000 5 4.2 não
04 57.50 131.0 690 6 8.8 não
05 59.75 93.0 900 5 1.9 sim

Por padrão, itens numéricos (exceto rótulos de linha) são lidos como variáveis ​​numéricas e variáveis ​​não-numéricas, como Cent.heat no exemplo, como fatores. Isso pode ser alterado se necessário.

A função read.table() pode então ser usada para ler o data frame diretamente.

Muitas vezes, você quer omitir, incluindo os rótulos de linha diretamente e usar os rótulos padrão. Nesse caso, o arquivo pode omitir a coluna da etiqueta da linha como a seguir.

Arquivo de entrada sem rótulos de linha:

Preço Chão Área Quart. Idade Cent.heat
52.00 111.0 830 5 6.2 não
54.75 128.0 710 5 7.5 não
57.50 101.0 1000 5 4.2 não
57.50 131.0 690 6 8.8 não
59.75 93.0 900 5 1.9 sim

O data frame pode então ser lido como

HousePrice = read.table("HousePrice.txt",header=TRUE)<- header="TRUE)</p" houses.data="" read.table="">

onde a opção header = TRUE especifica que a primeira linha é uma linha de cabeçalhos e, portanto, por implicação da forma do arquivo, que nenhum rótulo de linha explícito é fornecido.

A função scan()


A função scan() fornece um modo bastante flexível de ler arquivos.

Considere o arquivo input.txt com o seguinte conteúdo:
,t1,t2,t3,t4,t5,t6,t7,t8
r1,1,0,1,0,0,1,0,2
r2,1,2,5,1,2,1,2,1
r3,0,0,9,2,1,1,0,1
r4,0,0,2,1,2,0,0,0
r5,0,2,15,1,1,0,0,0
r6,2,2,3,1,1,1,0,0
r7,2,2,3,1,1,1,0,1

Para ler o arquivo, poderia ser feita a seguinte operação:

x <- ordermatrix.csv="" scan="" skip="1,quiet=TRUE);</p" what="character">
E o resultado seria o seguinte:

> x
[1] "r1,1,0,1,0,0,1,0,2"  "r2,1,2,5,1,2,1,2,1"  "r3,0,0,9,2,1,1,0,1"
[4] "r4,0,0,2,1,2,0,0,0"  "r5,0,2,15,1,1,0,0,0" "r6,2,2,3,1,1,1,0,0"
[7] "r7,2,2,3,1,1,1,0,1"


Caso não tenha percebido, a primeira linha foi omitida na "carga" do arquivo.

Alternativamente, poderia ser lida apenas uma linha do arquivo com a operação:

> x <- ordermatrix.csv="" scan="" skip="1,nlines=1);</div">
Read 1 item

E o resultado, neste caso, seria:

> x

[1] "r1,1,0,1,0,0,1,0,2"

É possível também ler o conteúdo do arquivo e armazenar cada linha como um item de uma lista, como abaixo.

> x <- div="" list="" ordermatrix.csv="" scan="" skip="1,what">

[[1]]
[1] "r1,1,0,1,0,0,1,0,2"

[[2]]
[1] "r2,1,2,5,1,2,1,2,1"

[[3]]
[1] "r3,0,0,9,2,1,1,0,1"

[[4]]
[1] "r4,0,0,2,1,2,0,0,0"

[[5]]
[1] "r5,0,2,15,1,1,0,0,0"

[[6]]
[1] "r6,2,2,3,1,1,1,0,0"

[[7]]
[1] "r7,2,2,3,1,1,1,0,1"

[[8]]
[1] ""

[[9]]
[1] ""

Ou ler dados diretamente do teclado:

> x <- div="" scan="" what="int">

1: 43    #input 43 from the screen
2:
Read 1 item

> x
[1] "43"

E até mesmo "colar" conteúdo de uma planilha após executar a operação abaixo:

> x <- div="" scan="">

E ter o conteúdo da planilha copiada disponível para uso com o objeto x.

Muito bacana a função scan(), não é mesmo?


Acessando conjuntos de dados pré-definidos


Uma das coisas mais incríveis do R é o conjunto com cerca de 100 "bandos de dados de exemplo" fornecidos, havendo mais alguns disponíveis em pacotes (incluindo os pacotes recomendados fornecidos com R).  Para ver a lista de data sets disponíveis, basta executar o comando

> data()

Todos os conjuntos de dados fornecidos com R estão disponíveis diretamente pelo nome. No entanto, muitos pacotes ainda utilizam a convenção obsoleta em que os dados também foram usados ​​para carregar conjuntos de dados em R, por exemplo

> data(infert)

E isso ainda pode ser usado com os pacotes padrão (como neste exemplo). Na maioria dos casos, isso irá carregar um objeto R do mesmo nome. No entanto, em alguns casos, carrega vários objetos, então veja a ajuda on-line para o objeto para ver o que é recomendado.


Carregando dados de outros pacotes R


Para acessar dados de um determinado pacote, use o argumento do pacote, por exemplo

data(package = "rpart")
data(Puromycin, package = "datasets")

Se um pacote foi anexado pela biblioteca, seus conjuntos de dados são incluídos automaticamente na pesquisa.

Os pacotes contribuídos pelo usuário podem ser uma fonte rica de conjuntos de dados.

Conclusão

As funcionalidades da linguagem R para manipulação de dados em arquivos facilitam muito a vida, principalmente depois que você armazena os dados num objeto data frame.

E você? Já usou R para leitura e manipulação de arquivos? Diz aí!

Christian Guerreiro

Professor por vocação, blogueiro e servidor público por opção, amante da tecnologia e viciado em informação.


Ensino a distância em Bitcoin & Criptomoedas, além de Tecnologia da Informação: Virtualização com VMware, Big Data com Hadoop, Certificação ITIL 2011 Foundations e muito mais.


Suporte o Tecnologia que Interessa!

Você acha que as informações compartilhadas aqui são úteis?
Então me ajude a produzir ainda mais e melhores conteúdos!


É muito fácil. Basta divulgar nossos treinamentos pra alguém que conheça!


E se for de Salvador, podemos estruturar um curso presencial para sua empresa!

Eu vou ficar muito grato (e quem fizer os curso também :)!