-
Notifications
You must be signed in to change notification settings - Fork 7
/
071-tibble.Rmd
81 lines (56 loc) · 2.81 KB
/
071-tibble.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
## Tibbles
*Tibbles* são *data frames* com ajustes que as deixam mais amigáveis a nós cientistas de dados. Elas são parte do pacote `{tibble}`. Assim, para começar a usá-las, instale e carregue o pacote.
```{r, eval = FALSE}
install.packages("tibble")
library(tibble)
```
```{r, include=FALSE}
library(tibble)
```
Há duas formas de criar uma *tibble*. A primeira é transformar um *data frame* em *tibble* utilizando a função `as_tibble()`.
```{r}
as_tibble(mtcars)
```
Veja que, por padrão, apenas as dez primeiras linhas da base são apresentadas. Além disso, colunas que não couberem na largura da tela serão omitidas. Também são apresentadas a dimensão da tabela e as classes de cada coluna. Compare a diferença de impressão com relação a um *data frame*.
```{r}
mtcars
```
Veja também que, ao contrário dos *data frames*, *tibbles* não utilizam nome nas linhas.
A segunda forma de criar uma *tibble* é a partir de vetores individuais, utilizando a função `tibble()`.
```{r}
tibble(
coluna1 = c("a", "b", "c", "d"),
coluna2 = 1:4,
coluna3 = coluna2 ^ 2,
coluna4 = 0
)
```
Observamos pelo código acima que:
- podemos criar uma coluna a partir de uma função de colunas anteriores (a `coluna3` é uma função da `coluna2`);
- se passarmos um vetor de tamanho 1 a uma das colunas, esse vetor será reciclado, igualando-se ao número de linhas da *tibble* (o `0` na `coluna4` é transformado em `c(0, 0, 0, 0)`).
Uma outra diferença entre *data frames* e *tibbles* está no *subsetting*. *Tibbles* **nunca fazem correspondência parcial**. Tibbles retornam `NULL` e um aviso quando você tenta selecionar uma coluna que não existe.
```{r}
# O nome da coluna é disp, mas você pode acessá-la
# apenas a procurando por "dis", já que não existe
# nenhuma outra coluna que começa com "dis".
mtcars$dis
# Em tibbles isso não funciona.
mtcars_tibble <- as_tibble(mtcars)
mtcars_tibble$dis
```
Além de nos possibilitar a criar *tibbles*, o pacote `{tibble}` possui algumas funções úteis para manipularmos esses objetos:
- `add_row()` e `add_column()`: para adicionar linhas e colunas a uma *tibble*;
- `rowid_to_column()`: cria uma coluna com um `id` numérico e sequencial para as linhas, começando de `1`.
```{r}
mtcars %>%
rowid_to_column() %>%
head(10)
```
- `has_rownames()`: verifica se um *data frame* possui linhas nomeadas.
- `remove_rownames()`: remove o nome das linhas de um *data frame*.
- `rownames_to_column()`: transforma o nome das linhas em uma coluna.
```{r}
rownames_to_column(mtcars, var = "modelo_do_carro")
```
- `column_to_rownames()`: transforma uma coluna em nomes das linhas.
Mais informações sobre `tibbles` podem ser encontradas [neste tutorial do RStudio](https://tibble.tidyverse.org/) e [neste capítulo do livro R for Data Science](http://r4ds.had.co.nz/tibbles.html).