library("tidyverse")
Loading tidyverse: ggplot2
Loading tidyverse: tibble
Loading tidyverse: tidyr
Loading tidyverse: readr
Loading tidyverse: purrr
Loading tidyverse: dplyr
Conflicts with tidy packages ------------------------------------------------------------------------------------
filter(): dplyr, stats
lag(): dplyr, stats
How can you tell if an object is a tibble? (Hint: try printing mtcars, which is a regular data frame).
On print, a tibble only show the first 10 rows and the columnt types as well.
tb_iris <- as_tibble(iris)
print(tb_iris)
Compare and contrast the following operations on a data.frame and equivalent tibble. What is different? Why might the default data frame behaviours cause you frustration?
df <- data.frame(abc = 1, xyz = "a")
# Notice: No warning on missing column!
df$x
[1] a
Levels: a
# Returning a factor
class(df[, "xyz"])
[1] "factor"
# Returning a data frame
class(df[, c("abc", "xyz")])
[1] "data.frame"
tb_df <- as_tibble(df)
# Notice: Shows warning on missing column!
tb_df$x
Unknown or uninitialised column: 'x'.
NULL
# Returning a tibble
class(tb_df[, "xyz"])
[1] "tbl_df" "tbl" "data.frame"
# Returning a tibble
class(tb_df[, c("abc", "xyz")])
[1] "tbl_df" "tbl" "data.frame"
Practice referring to non-syntactic names in the following data frame by:
annoying <- tibble(
`1` = 1:10,
`2` = `1` * 2 + rnorm(length(`1`))
)
Plotting a scatterplot of 1 vs 2.
ggplot(data = annoying) +
geom_point(aes(x = `1`, y = `2`))

Creating a new column called 3 which is 2 divided by 1.
mutate(annoying, `3` = `2` / `1`)
Renaming the columns to one, two and three.
transmute(annoying, one = `1`, two = `2`, three = `3`)
What does tibble::enframe() do? When might you use it?
# Converting atomic vectors to data frames, and vice versa
# For backwards compatibility with data frames
help(enframe)
LS0tDQp0aXRsZTogIlIgZm9yIERhdGEgU2NpZW5jZTogVGliYmxlcyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCmBgYHtyfQ0KbGlicmFyeSgidGlkeXZlcnNlIikNCmBgYA0KDQojIyMgSG93IGNhbiB5b3UgdGVsbCBpZiBhbiBvYmplY3QgaXMgYSB0aWJibGU/IChIaW50OiB0cnkgcHJpbnRpbmcgbXRjYXJzLCB3aGljaCBpcyBhIHJlZ3VsYXIgZGF0YSBmcmFtZSkuDQoNCk9uIHByaW50LCBhIHRpYmJsZSBvbmx5IHNob3cgdGhlIGZpcnN0IDEwIHJvd3MgYW5kIHRoZSBjb2x1bW50IHR5cGVzIGFzIHdlbGwuDQoNCmBgYHtyfQ0KdGJfaXJpcyA8LSBhc190aWJibGUoaXJpcykNCnByaW50KHRiX2lyaXMpDQpgYGANCg0KDQojIyMgQ29tcGFyZSBhbmQgY29udHJhc3QgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25zIG9uIGEgZGF0YS5mcmFtZSBhbmQgZXF1aXZhbGVudCB0aWJibGUuIFdoYXQgaXMgZGlmZmVyZW50PyBXaHkgbWlnaHQgdGhlIGRlZmF1bHQgZGF0YSBmcmFtZSBiZWhhdmlvdXJzIGNhdXNlIHlvdSBmcnVzdHJhdGlvbj8NCg0KYGBge3J9DQpkZiA8LSBkYXRhLmZyYW1lKGFiYyA9IDEsIHh5eiA9ICJhIikNCiMgTm90aWNlOiBObyB3YXJuaW5nIG9uIG1pc3NpbmcgY29sdW1uIQ0KZGYkeA0KIyBSZXR1cm5pbmcgYSBmYWN0b3INCmNsYXNzKGRmWywgInh5eiJdKQ0KIyBSZXR1cm5pbmcgYSBkYXRhIGZyYW1lDQpjbGFzcyhkZlssIGMoImFiYyIsICJ4eXoiKV0pDQoNCnRiX2RmIDwtIGFzX3RpYmJsZShkZikNCiMgTm90aWNlOiBTaG93cyB3YXJuaW5nIG9uIG1pc3NpbmcgY29sdW1uIQ0KdGJfZGYkeA0KIyBSZXR1cm5pbmcgYSB0aWJibGUNCmNsYXNzKHRiX2RmWywgInh5eiJdKQ0KIyBSZXR1cm5pbmcgYSB0aWJibGUNCmNsYXNzKHRiX2RmWywgYygiYWJjIiwgInh5eiIpXSkNCmBgYA0KDQoNCiMjIyBJZiB5b3UgaGF2ZSB0aGUgbmFtZSBvZiBhIHZhcmlhYmxlIHN0b3JlZCBpbiBhbiBvYmplY3QsIGUuZy4gdmFyIDwtICJtcGciLCBob3cgY2FuIHlvdSBleHRyYWN0IHRoZSByZWZlcmVuY2UgdmFyaWFibGUgZnJvbSBhIHRpYmJsZT8NCg0KYGBge3J9DQp0Yl9jYXJzIDwtIGFzX3RpYmJsZShtdGNhcnMpDQp2YXIgPC0gIm1wZyINCnRiX2NhcnNbdmFyXQ0KbXRjYXJzW3Zhcl0NCmBgYA0KDQoNCiMjIyBQcmFjdGljZSByZWZlcnJpbmcgdG8gbm9uLXN5bnRhY3RpYyBuYW1lcyBpbiB0aGUgZm9sbG93aW5nIGRhdGEgZnJhbWUgYnk6DQoNCmBgYHtyfQ0KYW5ub3lpbmcgPC0gdGliYmxlKA0KICBgMWAgPSAxOjEwLA0KICBgMmAgPSBgMWAgKiAyICsgcm5vcm0obGVuZ3RoKGAxYCkpDQopDQpgYGANCg0KIyMjIyBFeHRyYWN0aW5nIHRoZSB2YXJpYWJsZSBjYWxsZWQgMS4NCg0KYGBge3J9DQphbm5veWluZyRgMWANCmBgYA0KDQojIyMjIFBsb3R0aW5nIGEgc2NhdHRlcnBsb3Qgb2YgMSB2cyAyLg0KDQpgYGB7cn0NCmdncGxvdChkYXRhID0gYW5ub3lpbmcpICsNCiAgZ2VvbV9wb2ludChhZXMoeCA9IGAxYCwgeSA9IGAyYCkpDQpgYGANCg0KDQojIyMjIENyZWF0aW5nIGEgbmV3IGNvbHVtbiBjYWxsZWQgMyB3aGljaCBpcyAyIGRpdmlkZWQgYnkgMS4NCg0KYGBge3J9DQptdXRhdGUoYW5ub3lpbmcsIGAzYCA9IGAyYCAvIGAxYCkNCmBgYA0KDQojIyMjIFJlbmFtaW5nIHRoZSBjb2x1bW5zIHRvIG9uZSwgdHdvIGFuZCB0aHJlZS4NCg0KYGBge3J9DQp0cmFuc211dGUoYW5ub3lpbmcsIG9uZSA9IGAxYCwgdHdvID0gYDJgLCB0aHJlZSA9IGAzYCkNCmBgYA0KDQojIyMgV2hhdCBkb2VzIHRpYmJsZTo6ZW5mcmFtZSgpIGRvPyBXaGVuIG1pZ2h0IHlvdSB1c2UgaXQ/DQoNCmBgYHtyfQ0KIyBDb252ZXJ0aW5nIGF0b21pYyB2ZWN0b3JzIHRvIGRhdGEgZnJhbWVzLCBhbmQgdmljZSB2ZXJzYQ0KIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBkYXRhIGZyYW1lcw0KaGVscChlbmZyYW1lKQ0KYGBgDQoNCiMjIyBXaGF0IG9wdGlvbiBjb250cm9scyBob3cgbWFueSBhZGRpdGlvbmFsIGNvbHVtbiBuYW1lcyBhcmUgcHJpbnRlZCBhdCB0aGUgZm9vdGVyIG9mIGEgdGliYmxlPw0KDQpgYGB7cn0NCiMgdGliYmxlLm1heF9leHRyYV9jb2xzDQojIE51bWJlciBvZiBleHRyYSBjb2x1bW5zIHByaW50ZWQgaW4gcmVkdWNlZCBmb3JtLiBEZWZhdWx0OiAxMDAuDQpwYWNrYWdlP3RpYmJsZQ0KYGBgDQoNCg==