03-cap3.Rmd 5.06 KB
Newer Older
Guilherme Hathy's avatar
Guilherme Hathy committed
1
#Importação e exportação de dados
2 3


Guilherme Hathy's avatar
Guilherme Hathy committed
4
##Introdução
ihh16's avatar
ihh16 committed
5 6
Este capítulo contém as diferentes e mais adequadas formas de entrar com dados no R.

Guilherme Hathy's avatar
Guilherme Hathy committed
7
### Importação e exportação de dados
ihh16's avatar
ihh16 committed
8 9 10
A entrada de dados pode ser feita de duas maneiras: diretamente no R ou, quando já foram digitados em outro programa, em arquivos texto.
Já a exportção de dados é comumente feita através de uma função.

Guilherme Hathy's avatar
Guilherme Hathy committed
11 12
#### Entrada de dados diretamente no R
##### Entrada via Teclado 
ihh16's avatar
ihh16 committed
13 14 15 16
Para entrar com os dados no R a paritr do teclado é necessário utilizar a função **scan()** . Para utilizar essa função, basta digitar no script ou no console **scan()** e então precionar a tecla **enter**. Como consequência, o console estará diponível para digitar os dados. A cada número digitado pressione a tecla **enter**. 
Outra maneira é digitar os números separados por espaços em branco para então pressionar **enter**. Para encerrar a entrada de dados, basta pressionar **enter** duas vezes seguidas.

#### Exemplo 1 da função scan()
ihh16's avatar
ihh16 committed
17 18
x <- scan()

ihh16's avatar
ihh16 committed
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
1: 2

2: 4

3: 8

4: 9

5: 

Read 4 items

[1] 2 4 8 9


#### Exemplo 2 da função scan()
Guilherme Hathy's avatar
Guilherme Hathy committed
35

ihh16's avatar
ihh16 committed
36 37
y <- scan()

ihh16's avatar
ihh16 committed
38 39 40 41 42 43 44
1: 2 4 8 9

5: 

Read 4 items

[1] 2 4 8 9
ihh16's avatar
ihh16 committed
45 46 47 48


A função scan também pode interpretar elementos de outras classes, para isso deve-se digitar **scan(what = "character")**. Os outros argumentos para *what* são: logical, integer, numeric,  complex, character, raw e list.

Guilherme Hathy's avatar
Guilherme Hathy committed
49
##### Entrada via teclado na forma *strings*
ihh16's avatar
ihh16 committed
50 51 52 53 54 55 56 57 58

A função utilizada para esse fim é a **readLines()**. Um dos argumentos dessa função é *n*, que serve para indicar o númro de linhas que serão digitados. Para melhor entendimento, segue o exemplo

```{r}
texto <- readLines(n = 1)
#Estou digitando o texto no console ou no script

```

Guilherme Hathy's avatar
Guilherme Hathy committed
59
#### Entrada de dados em arquivos texto
ihh16's avatar
ihh16 committed
60 61 62 63 64
Este tipo de entrada é sempre utilizada quando os dados já foram digitados em qualquer outro programa. Para isso é necessário ver em qual formato que o arquivo a ser importado foi salvo. É mais fácil importar arquivos em formato de texto, por isso, é possível entrar no arquivo e selecionar *salvar como* e gravar os arquivos em formato de texto. Os dois prncipais formatos de texto são: 
* txt: arquivo onde as colunas são separadas geralmente por uma tabulação(tab) ou espaço(tecla space)
 
* csv: arquivo onde as colunas são geralmente separadas por vírgula (comma separated value), ou ponto-e-vírgula.

Guilherme Hathy's avatar
Guilherme Hathy committed
65
##### A função read.table()
ihh16's avatar
ihh16 committed
66 67 68 69 70 71 72 73 74 75 76
Para importar os dados ser? necess?rio utilizar a fun??o **read.table()**. Essa função possui os seguintes argumentos:

*"~/diretório do arqv/nomeArquivo.csv" ou "~/diretório do arqv/nomeArquivo.txt"  

*header = TRUE ou FALSE: significa que a primeira linha do arquivo deve ser inrpretada ou não como os nomes das colunas

*sep = ";" ou "\t": comumente ";" é utilizado para arquivos .csv e "\t" para arquivos .txt

*dec = "," ou ".": o separador de decimais

```{r}
Guilherme Hathy's avatar
Guilherme Hathy committed
77
dados <- read.table("dados/crabs.csv", header = T, sep = ";", dec = ".")
ihh16's avatar
ihh16 committed
78 79 80
head(dados)
```

Guilherme Hathy's avatar
Guilherme Hathy committed
81
###### OBSERVAÇÃO
ihh16's avatar
ihh16 committed
82 83
 * Quando houver colunas com caracteres, elas serão interpretadas como factor. Para alterar esse padrão acrescente o argumento stringAsFactors = FALSE
 
Guilherme Hathy's avatar
Guilherme Hathy committed
84
##### O argumento clipboard para copiar e colar dados
ihh16's avatar
ihh16 committed
85 86 87 88 89 90 91 92

Como o título do tópico menciona, o argumento clipboard é utilizado quando deseja-se usar a área de transferência (*Ctrl + c*) para serem lidos no R. A utilização desse argumento é da seguinte forma:


* dados.clip <- read.table("clipboard", header = TRUE, dec = ",")



Guilherme Hathy's avatar
Guilherme Hathy committed
93
##### Carregando dados já disponíveis no R
ihh16's avatar
ihh16 committed
94 95 96

Use o comando *ls()* para veficar os objetos criados na sua seção. Agora digite *data("trees")* e verifique novamente sua lista de objetos criados. Agora "trees" foi adicionado a essa lista, ou seja, o comando **data()** serve para importar arquivos já disponíveis no R.

Guilherme Hathy's avatar
Guilherme Hathy committed
97
#### Lendo dados de uma URL
ihh16's avatar
ihh16 committed
98 99 100 101 102 103 104 105 106 107 108

Para ler os dados através uma URL, basta verificar o link de acesso à base de dados para dexá-lo representato por uma variável. Então, basta importá-lo pela função *read.table*, utilizando os mesmos argumentos. 

```{r}
url <- 'http://www.leg.ufpr.br/~walmes/data/brasilCopa2014.txt'

dados <- read.table(url, header = T, sep = '\t')

```


Guilherme Hathy's avatar
Guilherme Hathy committed
109
#### Exportando dados do R
ihh16's avatar
ihh16 committed
110 111 112 113

Assim como read.table() foi utilizada para importar, a função **write.table()** terá a função de exportar. Os argumentos de ambas as funções são muito semelhantes. A função write.table() segue um padrão de criar arquivos com colunas separadas por espaço, o separador de decimal é ponto e os nomes das linhas são incluídos. Portanto, para exportar arquivos, basta digitar:

```{r}
Guilherme Hathy's avatar
Guilherme Hathy committed
114
write.table(women, file = "dados/women.csv", row.names = FALSE, sep = ";", dec = ",")
ihh16's avatar
ihh16 committed
115 116 117 118 119 120 121 122
```
Os argumentos dessa função são:

* women: Nome do conjunto de dados a ser exportado (também pode ser o nome da variável que armazena o conjunto de dados salvos)
* "women.csv": nome e formato do arquivo a ser gerado (neste caso na pasta "Dados ce083").
* row.names = FALSE: para eliminar o nome das linhas do objeto.
* sep = ";": o separador de colunas (também pode ser "/t" para arquivos .txt e  "" para espaços)
* dec = ",": o separador de decimais