Capítulo17 Tibbles
Fecha de la última revisión
## [1] "2026-08-01"
El tema proviene de los siguientes sitios.
English: https://r4ds.had.co.nz/tibbles.html
Español: https://es.r4ds.hadley.nz/10-tibble.html
17.1 Temas: El paquete Tibble
Los tibble son la versión moderna del data.frame dentro del tidyverse: hacen menos «magia» automática (no cambian nombres ni tipos de columna) y ofrecen una impresión más legible en la consola.
- as_tibble()
17.2 Crear un tibble
tibble(), tribble(), as_tibble() — crear tablas modernas.
tibble(col = valores, ...): crea un tibble por columnas.tribble(~col1, ~col2, v, v, ...): lo crea fila por fila (cómodo para tablas pequeñas escritas a mano).as_tibble(df): convierte undata.frameen tibble.
- tibble()
Crear un tibble con la siguiente información. Una columna que tiene los valores del 1 al 8 que se llama “secuencia”, una segunda columna que tiene los siguientes valores 23,26, 24,26,27, 11,20,21 que se llama edad y una tercera columna con la siguiente información, Jose, Maria, Carol, Moncho, Liz, Maria, Jorge, Miguel, que se llama Nombre
library(tidyverse)
#library(datos)
tibble(
secuencia = c(1:6),
edad = c(23,26, 24,26,27, NA),
nombre = c("Jose", "Maria", "Carol", "Moncho", "Liz", "Maria")
)## # A tibble: 6 × 3
## secuencia edad nombre
## <int> <dbl> <chr>
## 1 1 23 Jose
## 2 2 26 Maria
## 3 3 24 Carol
## 4 4 26 Moncho
## 5 5 27 Liz
## 6 6 NA Maria
17.3 Crear un tribble
- tribble()
Haga un tribble con las primeras 3 líneas del tibble anterior
## # A tibble: 3 × 3
## secuencia edad nombre
## <dbl> <dbl> <chr>
## 1 1 23 Jose
## 2 2 26 Maria
## 3 3 23 Carol
17.4 tibble vs. data.frame
tb = tibble(
a = lubridate::now() + runif(1e2) * 86400,
b = lubridate::today() + runif(1e2) * 30,
c = 1:100,
d = runif(1e2),
e = sample(letters, 1e2, replace = TRUE)
)
tb## # A tibble: 100 × 5
## a b c d e
## <dttm> <date> <int> <dbl> <chr>
## 1 2026-08-02 00:17:52 2026-08-19 1 0.559 o
## 2 2026-08-02 06:47:06 2026-08-01 2 0.250 o
## 3 2026-08-02 01:40:43 2026-08-03 3 0.0653 d
## 4 2026-08-02 23:26:57 2026-08-02 4 0.573 v
## 5 2026-08-02 06:59:13 2026-08-23 5 0.651 k
## 6 2026-08-02 15:11:02 2026-08-12 6 0.581 p
## 7 2026-08-02 19:49:07 2026-08-25 7 0.0175 x
## 8 2026-08-02 18:49:06 2026-08-12 8 0.0133 f
## 9 2026-08-02 13:03:50 2026-08-15 9 0.661 c
## 10 2026-08-02 19:12:03 2026-08-24 10 0.380 y
## # ℹ 90 more rows
## a b c d e
## 1 2026-08-02 00:17:52 2026-08-19 1 0.55895788 o
## 2 2026-08-02 06:47:06 2026-08-01 2 0.24952694 o
## 3 2026-08-02 01:40:43 2026-08-03 3 0.06531608 d
## 4 2026-08-02 23:26:57 2026-08-02 4 0.57306761 v
## 5 2026-08-02 06:59:13 2026-08-23 5 0.65098699 k
## 6 2026-08-02 15:11:02 2026-08-12 6 0.58124937 p
## 7 2026-08-02 19:49:07 2026-08-25 7 0.01748210 x
## 8 2026-08-02 18:49:06 2026-08-12 8 0.01331984 f
## 9 2026-08-02 13:03:50 2026-08-15 9 0.66064715 c
## 10 2026-08-02 19:12:03 2026-08-24 10 0.38021846 y
## 11 2026-08-02 23:21:19 2026-08-23 11 0.55374044 o
## 12 2026-08-02 20:48:53 2026-08-12 12 0.57734132 r
## 13 2026-08-02 21:13:33 2026-08-03 13 0.89874595 s
## 14 2026-08-02 15:33:34 2026-08-14 14 0.02335350 s
## 15 2026-08-02 10:12:42 2026-08-24 15 0.36233644 a
## 16 2026-08-02 11:57:48 2026-08-08 16 0.79219053 c
## 17 2026-08-02 13:15:40 2026-08-08 17 0.79451792 q
## 18 2026-08-02 01:09:09 2026-08-11 18 0.03461087 h
## 19 2026-08-02 05:47:21 2026-08-02 19 0.83758986 y
## 20 2026-08-02 12:02:40 2026-08-12 20 0.08880666 h
## 21 2026-08-02 04:22:51 2026-08-14 21 0.81779321 m
## 22 2026-08-02 02:47:14 2026-08-28 22 0.88725936 k
## 23 2026-08-02 15:41:35 2026-08-02 23 0.26002925 a
## 24 2026-08-02 02:52:18 2026-08-12 24 0.31542900 t
## 25 2026-08-02 09:29:21 2026-08-06 25 0.91124396 m
## 26 2026-08-02 04:49:11 2026-08-15 26 0.69990520 u
## 27 2026-08-02 14:00:19 2026-08-30 27 0.83810166 o
## 28 2026-08-02 11:30:15 2026-08-04 28 0.39910988 q
## 29 2026-08-02 21:25:00 2026-08-24 29 0.99993174 t
## 30 2026-08-02 13:08:00 2026-08-10 30 0.66218230 y
## 31 2026-08-02 08:05:49 2026-08-05 31 0.98046836 c
## 32 2026-08-02 12:15:40 2026-08-13 32 0.13905381 o
## 33 2026-08-02 16:17:35 2026-08-27 33 0.34755612 m
## 34 2026-08-02 05:12:12 2026-08-20 34 0.99072892 t
## 35 2026-08-02 20:25:34 2026-08-23 35 0.01158322 g
## 36 2026-08-02 10:39:23 2026-08-21 36 0.59905566 w
## 37 2026-08-02 08:40:36 2026-08-21 37 0.66253655 m
## 38 2026-08-02 19:59:56 2026-08-09 38 0.81108752 p
## 39 2026-08-02 03:39:18 2026-08-28 39 0.86941914 m
## 40 2026-08-02 13:24:55 2026-08-25 40 0.18531162 v
## 41 2026-08-02 21:13:22 2026-08-05 41 0.93845374 p
## 42 2026-08-02 01:43:32 2026-08-11 42 0.98626153 o
## 43 2026-08-02 01:40:29 2026-08-24 43 0.36978729 g
## 44 2026-08-02 01:28:25 2026-08-12 44 0.40597546 h
## 45 2026-08-01 23:53:00 2026-08-03 45 0.45127090 p
## 46 2026-08-02 16:28:59 2026-08-05 46 0.83761479 d
## 47 2026-08-02 13:21:11 2026-08-30 47 0.20941751 c
## 48 2026-08-02 09:12:52 2026-08-26 48 0.99204004 y
## 49 2026-08-02 09:30:27 2026-08-02 49 0.50421065 r
## 50 2026-08-02 03:05:08 2026-08-12 50 0.33143023 g
## 51 2026-08-02 22:28:44 2026-08-11 51 0.73076078 w
## 52 2026-08-02 13:24:35 2026-08-07 52 0.46601006 v
## 53 2026-08-02 09:53:45 2026-08-21 53 0.93914242 z
## 54 2026-08-02 14:47:52 2026-08-27 54 0.88173091 s
## 55 2026-08-02 07:46:36 2026-08-25 55 0.34532379 i
## 56 2026-08-02 01:49:31 2026-08-19 56 0.58456342 l
## 57 2026-08-01 23:51:36 2026-08-27 57 0.88058255 v
## 58 2026-08-02 01:44:21 2026-08-02 58 0.22127013 v
## 59 2026-08-02 15:24:58 2026-08-19 59 0.89288290 o
## 60 2026-08-02 07:32:31 2026-08-07 60 0.02081485 y
## 61 2026-08-02 04:10:17 2026-08-17 61 0.27143203 n
## 62 2026-08-02 09:07:44 2026-08-08 62 0.95400736 c
## 63 2026-08-02 07:14:31 2026-08-09 63 0.86419811 j
## 64 2026-08-02 08:08:58 2026-08-10 64 0.25909042 i
## 65 2026-08-02 16:07:01 2026-08-11 65 0.71488890 t
## 66 2026-08-02 16:38:54 2026-08-10 66 0.14559841 m
## 67 2026-08-02 13:45:48 2026-08-15 67 0.33884110 a
## 68 2026-08-02 17:11:36 2026-08-14 68 0.85914380 c
## 69 2026-08-02 14:15:06 2026-08-22 69 0.78041364 o
## 70 2026-08-02 08:52:12 2026-08-21 70 0.83340269 v
## 71 2026-08-02 19:42:01 2026-08-22 71 0.46138001 k
## 72 2026-08-02 18:59:11 2026-08-23 72 0.95366063 x
## 73 2026-08-02 05:36:59 2026-08-28 73 0.58594067 i
## 74 2026-08-02 07:46:48 2026-08-17 74 0.07427914 i
## 75 2026-08-02 00:06:09 2026-08-29 75 0.41196391 p
## 76 2026-08-02 21:14:11 2026-08-11 76 0.64245513 l
## 77 2026-08-02 09:20:50 2026-08-14 77 0.88572561 a
## 78 2026-08-02 03:52:16 2026-08-30 78 0.27894255 z
## 79 2026-08-02 09:46:24 2026-08-21 79 0.11545121 p
## 80 2026-08-02 00:50:02 2026-08-27 80 0.27069348 w
## 81 2026-08-02 14:35:47 2026-08-02 81 0.09039557 m
## 82 2026-08-02 13:48:11 2026-08-30 82 0.84375956 u
## 83 2026-08-02 05:15:26 2026-08-13 83 0.44452948 t
## 84 2026-08-02 03:35:36 2026-08-09 84 0.17054338 a
## 85 2026-08-02 09:36:33 2026-08-30 85 0.94064577 n
## 86 2026-08-02 12:04:12 2026-08-06 86 0.55504992 s
## 87 2026-08-02 03:17:24 2026-08-29 87 0.74138904 o
## 88 2026-08-02 02:59:54 2026-08-12 88 0.69146950 m
## 89 2026-08-02 15:07:51 2026-08-23 89 0.95055655 v
## 90 2026-08-02 19:03:30 2026-08-27 90 0.50241356 h
## 91 2026-08-02 19:23:08 2026-08-26 91 0.94041471 l
## 92 2026-08-02 13:27:02 2026-08-12 92 0.66040567 e
## 93 2026-08-02 07:19:09 2026-08-17 93 0.74075930 s
## 94 2026-08-02 18:54:20 2026-08-17 94 0.49824345 q
## 95 2026-08-01 23:33:28 2026-08-29 95 0.10436335 j
## 96 2026-08-02 08:32:00 2026-08-01 96 0.06179632 g
## 97 2026-08-02 11:34:37 2026-08-10 97 0.21776393 s
## 98 2026-08-02 22:54:24 2026-08-01 98 0.15662152 x
## 99 2026-08-02 09:37:53 2026-08-19 99 0.62424786 s
## 100 2026-08-02 14:35:09 2026-08-03 100 0.39037936 c
## # A tibble: 100 × 5
## a b c d e
## <dttm> <date> <int> <dbl> <chr>
## 1 2026-08-02 00:17:52 2026-08-19 1 0.559 o
## 2 2026-08-02 06:47:06 2026-08-01 2 0.250 o
## 3 2026-08-02 01:40:43 2026-08-03 3 0.0653 d
## 4 2026-08-02 23:26:57 2026-08-02 4 0.573 v
## # ℹ 96 more rows
## [1] "2026-08-01 23:30:10 AST"
## [1] "2026-08-01"
To convert a data frame to a tibble use as_tibble()
To convert a tibble to a data frame use as.data.frame
17.5 Diferencias entre un tibble y un data frame.
- Tibbles tiene un buen método de impresión que muestra solo las primeras 10 filas y todas las columnas que caben en la pantalla.
- Tibbles no admite nombres de filas. Se eliminan al convertir a tibble o al crear subconjuntos:
Operaciones aritméticas en tibbles
A diferencia de los data frame, los tibbles NO admiten operaciones aritméticas en todas las columnas. El resultado fuerza silenciosamente a un data frame.
## [1] FALSE
## [1] TRUE
## # A tibble: 3 × 3
## a b c
## <int> <int> <dbl>
## 1 1 4 8
## 2 2 5 10
## 3 3 6 12
## [1] TRUE
- Los tibbles también son más estrictos con $. Tibbles nunca realiza coincidencias parciales y generará una advertencia y devolverá NULL si la columna no existe:
## [1] 1
## [1] 1
- Para extraer una columna de un tibble, use [[. Esto es más seguro que $ porque nunca realiza coincidencias parciales:
17.6 Selección de subconjuntos de datos
## [1] 515 529 540 545 600 558 600 600 600 600 600 600 600 600 600 559 600 600 600
## [20] 600
## [1] 515 529 540 545 600 558 600 600 600 600 600 600 600 600 600 559 600 600 600
## [20] 600
## [1] 515 529 540 545 600 558 600 600 600 600 600 600 600 600 600 559 600 600 600
## [20] 600
## [1] 515 529 540 545 600 558 600 600 600 600 600 600 600 600 600 559 600 600 600
## [20] 600
## [1] 2 4 2 -1 -6 -4 -5 -3 -3 -2 -2 -2 -2 -2 -1 0 -1 0 0 1
- Ejercicios:
Hacer los ejercicios en la sección 10.5 del libro en español