edit:
- link: https://github.com/hadley/r4ds/edit/master/%s
+ link: https://github.com/cienciadedatos/r4ds/edit/master/%s
text: "Edit"
sharing: no
css: r4ds.css
bookdown::pdf_book:
latex_engine: "xelatex"
-
diff --git a/diagrams/en/tidy-1.svg b/diagrams/en/tidy-1.svg
new file mode 100644
index 000000000..abd4b401f
--- /dev/null
+++ b/diagrams/en/tidy-1.svg
@@ -0,0 +1,2593 @@
+
+
+
+
diff --git a/diagrams/en/tidy-17.svg b/diagrams/en/tidy-17.svg
new file mode 100644
index 000000000..a535e306e
--- /dev/null
+++ b/diagrams/en/tidy-17.svg
@@ -0,0 +1,1522 @@
+
+
+
+
diff --git a/diagrams/en/tidy-18.svg b/diagrams/en/tidy-18.svg
new file mode 100644
index 000000000..ebc7526fc
--- /dev/null
+++ b/diagrams/en/tidy-18.svg
@@ -0,0 +1,1546 @@
+
+
+
+
diff --git a/diagrams/en/tidy-8.svg b/diagrams/en/tidy-8.svg
new file mode 100644
index 000000000..350ecac90
--- /dev/null
+++ b/diagrams/en/tidy-8.svg
@@ -0,0 +1,1773 @@
+
+
+
+
diff --git a/diagrams/en/tidy-9.svg b/diagrams/en/tidy-9.svg
new file mode 100644
index 000000000..fd194225d
--- /dev/null
+++ b/diagrams/en/tidy-9.svg
@@ -0,0 +1,1247 @@
+
+
+
+
diff --git a/diagrams/es/tidy-1.svg b/diagrams/es/tidy-1.svg
new file mode 100644
index 000000000..f009c194e
--- /dev/null
+++ b/diagrams/es/tidy-1.svg
@@ -0,0 +1,2425 @@
+
+
+
+
diff --git a/diagrams/es/tidy-17.svg b/diagrams/es/tidy-17.svg
new file mode 100644
index 000000000..0c498c6cf
--- /dev/null
+++ b/diagrams/es/tidy-17.svg
@@ -0,0 +1,1522 @@
+
+
+
+
diff --git a/diagrams/es/tidy-18.svg b/diagrams/es/tidy-18.svg
new file mode 100644
index 000000000..ffbf38ba9
--- /dev/null
+++ b/diagrams/es/tidy-18.svg
@@ -0,0 +1,1546 @@
+
+
+
+
diff --git a/diagrams/es/tidy-8.svg b/diagrams/es/tidy-8.svg
new file mode 100644
index 000000000..36b8fdb66
--- /dev/null
+++ b/diagrams/es/tidy-8.svg
@@ -0,0 +1,2289 @@
+
+
+
+
diff --git a/diagrams/es/tidy-9.svg b/diagrams/es/tidy-9.svg
new file mode 100644
index 000000000..3696329e3
--- /dev/null
+++ b/diagrams/es/tidy-9.svg
@@ -0,0 +1,1257 @@
+
+
+
+
diff --git a/diagrams_w_text_as_path/en/tidy-1.svg b/diagrams_w_text_as_path/en/tidy-1.svg
new file mode 100644
index 000000000..acfd4dd51
--- /dev/null
+++ b/diagrams_w_text_as_path/en/tidy-1.svg
@@ -0,0 +1,3795 @@
+
+
diff --git a/diagrams_w_text_as_path/en/tidy-17.svg b/diagrams_w_text_as_path/en/tidy-17.svg
new file mode 100644
index 000000000..fe2fb5569
--- /dev/null
+++ b/diagrams_w_text_as_path/en/tidy-17.svg
@@ -0,0 +1,2330 @@
+
+
diff --git a/diagrams_w_text_as_path/en/tidy-18.svg b/diagrams_w_text_as_path/en/tidy-18.svg
new file mode 100644
index 000000000..ffb851549
--- /dev/null
+++ b/diagrams_w_text_as_path/en/tidy-18.svg
@@ -0,0 +1,2330 @@
+
+
diff --git a/diagrams_w_text_as_path/en/tidy-8.svg b/diagrams_w_text_as_path/en/tidy-8.svg
new file mode 100644
index 000000000..c93944599
--- /dev/null
+++ b/diagrams_w_text_as_path/en/tidy-8.svg
@@ -0,0 +1,2994 @@
+
+
diff --git a/diagrams_w_text_as_path/en/tidy-9.svg b/diagrams_w_text_as_path/en/tidy-9.svg
new file mode 100644
index 000000000..f84a01d11
--- /dev/null
+++ b/diagrams_w_text_as_path/en/tidy-9.svg
@@ -0,0 +1,1534 @@
+
+
diff --git a/diagrams_w_text_as_path/es/tidy-1.svg b/diagrams_w_text_as_path/es/tidy-1.svg
new file mode 100644
index 000000000..e441d4cef
--- /dev/null
+++ b/diagrams_w_text_as_path/es/tidy-1.svg
@@ -0,0 +1,3599 @@
+
+
diff --git a/diagrams_w_text_as_path/es/tidy-17.svg b/diagrams_w_text_as_path/es/tidy-17.svg
new file mode 100644
index 000000000..506ff5832
--- /dev/null
+++ b/diagrams_w_text_as_path/es/tidy-17.svg
@@ -0,0 +1,2286 @@
+
+
diff --git a/diagrams_w_text_as_path/es/tidy-18.svg b/diagrams_w_text_as_path/es/tidy-18.svg
new file mode 100644
index 000000000..2b6fae365
--- /dev/null
+++ b/diagrams_w_text_as_path/es/tidy-18.svg
@@ -0,0 +1,2282 @@
+
+
diff --git a/diagrams_w_text_as_path/es/tidy-8.svg b/diagrams_w_text_as_path/es/tidy-8.svg
new file mode 100644
index 000000000..5b89ba453
--- /dev/null
+++ b/diagrams_w_text_as_path/es/tidy-8.svg
@@ -0,0 +1,3328 @@
+
+
diff --git a/diagrams_w_text_as_path/es/tidy-9.svg b/diagrams_w_text_as_path/es/tidy-9.svg
new file mode 100644
index 000000000..3f71b15a4
--- /dev/null
+++ b/diagrams_w_text_as_path/es/tidy-9.svg
@@ -0,0 +1,1501 @@
+
+
diff --git a/images/tidy-1.svg b/images/tidy-1.svg
deleted file mode 100644
index d916bab20..000000000
--- a/images/tidy-1.svg
+++ /dev/null
@@ -1,2515 +0,0 @@
-
-
-
-
diff --git a/index.rmd b/index.rmd
index dfc18433a..cc898e9cd 100644
--- a/index.rmd
+++ b/index.rmd
@@ -13,7 +13,6 @@ documentclass: book
---
# Bienvenida {-}
-
Este es el sitio web de la versión en español de __"R for Data Science"__, de Hadley Wickham y Garrett Grolemund. Este texto te enseñará cómo hacer ciencia de datos con R: aprenderás a importar datos, llevarlos a la estructura más conveniente, transformarlos, visualizarlos y modelarlos. Con él podrás poner en pŕactica las habilidades necesarias para hacer ciencia de datos. Tal como los químicos aprenden a limpiar tubos de ensayo y ordenar un laboratorio, aprenderás a limpiar datos y crear gráficos--- junto a muchas otras habilidades que permiten que la ciencia de datos tenga lugar. En este libro encontrarás las mejores prácticas para desarrollar dichas tareas usando R. También aprenderás a usar la gramática de gráficos, programación letrada e investigación reproducible para ahorrar tiempo. Además, aprenderás a manejar recursos cognitivos para facilitar el hacer descubrimientos al momento de manipular, visualizar y explorar datos.
## Sobre la traducción
diff --git a/model-building.Rmd b/model-building.Rmd
index ddb095785..4e54a5f53 100644
--- a/model-building.Rmd
+++ b/model-building.Rmd
@@ -25,6 +25,7 @@ We'll use the same tools as in the previous chapter, but add in some real datase
```{r setup, message = FALSE}
library(tidyverse)
+library(hexbin)
library(modelr)
options(na.action = na.warn)
diff --git a/packrat/init.R b/packrat/init.R
deleted file mode 100644
index c0c485ef2..000000000
--- a/packrat/init.R
+++ /dev/null
@@ -1,228 +0,0 @@
-message("Using packrat :D")
-
-local({
-
- ## Helper function to get the path to the library directory for a
- ## given packrat project.
- getPackratLibDir <- function(projDir = NULL) {
- path <- file.path("packrat", "lib", R.version$platform, getRversion())
-
- if (!is.null(projDir)) {
-
- ## Strip trailing slashes if necessary
- projDir <- sub("/+$", "", projDir)
-
- ## Only prepend path if different from current working dir
- if (!identical(normalizePath(projDir), normalizePath(getwd())))
- path <- file.path(projDir, path)
- }
-
- path
- }
-
- ## Ensure that we set the packrat library directory relative to the
- ## project directory. Normally, this should be the working directory,
- ## but we also use '.rs.getProjectDirectory()' if necessary (e.g. we're
- ## rebuilding a project while within a separate directory)
- libDir <- if (exists(".rs.getProjectDirectory"))
- getPackratLibDir(.rs.getProjectDirectory())
- else
- getPackratLibDir()
-
- ## Unload packrat in case it's loaded -- this ensures packrat _must_ be
- ## loaded from the private library. Note that `requireNamespace` will
- ## succeed if the package is already loaded, regardless of lib.loc!
- if ("packrat" %in% loadedNamespaces())
- try(unloadNamespace("packrat"), silent = TRUE)
-
- if (suppressWarnings(requireNamespace("packrat", quietly = TRUE, lib.loc = libDir))) {
-
- # Check 'print.banner.on.startup' -- when NA and RStudio, don't print
- print.banner <- packrat::get_opts("print.banner.on.startup")
- if (print.banner == "auto" && is.na(Sys.getenv("RSTUDIO", unset = NA))) {
- print.banner <- TRUE
- } else {
- print.banner <- FALSE
- }
- return(packrat::on(print.banner = print.banner))
- }
-
- ## Escape hatch to allow RStudio to handle bootstrapping. This
- ## enables RStudio to provide print output when automagically
- ## restoring a project from a bundle on load.
- if (!is.na(Sys.getenv("RSTUDIO", unset = NA)) &&
- is.na(Sys.getenv("RSTUDIO_PACKRAT_BOOTSTRAP", unset = NA))) {
- Sys.setenv("RSTUDIO_PACKRAT_BOOTSTRAP" = "1")
- setHook("rstudio.sessionInit", function(...) {
- # Ensure that, on sourcing 'packrat/init.R', we are
- # within the project root directory
- if (exists(".rs.getProjectDirectory")) {
- owd <- getwd()
- setwd(.rs.getProjectDirectory())
- on.exit(setwd(owd), add = TRUE)
- }
- source("packrat/init.R")
- })
- return(invisible(NULL))
- }
-
- ## Bootstrapping -- only performed in interactive contexts,
- ## or when explicitly asked for on the command line
- if (interactive() || "--bootstrap-packrat" %in% commandArgs(TRUE)) {
-
- needsRestore <- "--bootstrap-packrat" %in% commandArgs(TRUE)
-
- message("Packrat is not installed in the local library -- ",
- "attempting to bootstrap an installation...")
-
- ## We need utils for the following to succeed -- there are calls to functions
- ## in 'restore' that are contained within utils. utils gets loaded at the
- ## end of start-up anyhow, so this should be fine
- library("utils", character.only = TRUE)
-
- ## Install packrat into local project library
- packratSrcPath <- list.files(full.names = TRUE,
- file.path("packrat", "src", "packrat")
- )
-
- ## No packrat tarballs available locally -- try some other means of installation
- if (!length(packratSrcPath)) {
-
- message("> No source tarball of packrat available locally")
-
- ## There are no packrat sources available -- try using a version of
- ## packrat installed in the user library to bootstrap
- if (requireNamespace("packrat", quietly = TRUE) && packageVersion("packrat") >= "0.2.0.99") {
- message("> Using user-library packrat (",
- packageVersion("packrat"),
- ") to bootstrap this project")
- }
-
- ## Couldn't find a user-local packrat -- try finding and using devtools
- ## to install
- else if (requireNamespace("devtools", quietly = TRUE)) {
- message("> Attempting to use devtools::install_github to install ",
- "a temporary version of packrat")
- library(stats) ## for setNames
- devtools::install_github("rstudio/packrat")
- }
-
- ## Try downloading packrat from CRAN if available
- else if ("packrat" %in% rownames(available.packages())) {
- message("> Installing packrat from CRAN")
- install.packages("packrat")
- }
-
- ## Fail -- couldn't find an appropriate means of installing packrat
- else {
- stop("Could not automatically bootstrap packrat -- try running ",
- "\"'install.packages('devtools'); devtools::install_github('rstudio/packrat')\"",
- "and restarting R to bootstrap packrat.")
- }
-
- # Restore the project, unload the temporary packrat, and load the private packrat
- if (needsRestore)
- packrat::restore(prompt = FALSE, restart = TRUE)
-
- ## This code path only reached if we didn't restart earlier
- unloadNamespace("packrat")
- requireNamespace("packrat", lib.loc = libDir, quietly = TRUE)
- return(packrat::on())
-
- }
-
- ## Multiple packrat tarballs available locally -- try to choose one
- ## TODO: read lock file and infer most appropriate from there; low priority because
- ## after bootstrapping packrat a restore should do the right thing
- if (length(packratSrcPath) > 1) {
- warning("Multiple versions of packrat available in the source directory;",
- "using packrat source:\n- ", shQuote(packratSrcPath))
- packratSrcPath <- packratSrcPath[[1]]
- }
-
-
- lib <- file.path("packrat", "lib", R.version$platform, getRversion())
- if (!file.exists(lib)) {
- dir.create(lib, recursive = TRUE)
- }
-
- message("> Installing packrat into project private library:")
- message("- ", shQuote(lib))
-
- surround <- function(x, with) {
- if (!length(x)) return(character())
- paste0(with, x, with)
- }
-
-
- ## Invoke install.packages() in clean R session
- peq <- function(x, y) paste(x, y, sep = " = ")
- installArgs <- c(
- peq("pkgs", surround(packratSrcPath, with = "'")),
- peq("lib", surround(lib, with = "'")),
- peq("repos", "NULL"),
- peq("type", surround("source", with = "'"))
- )
-
- fmt <- "utils::install.packages(%s)"
- installCmd <- sprintf(fmt, paste(installArgs, collapse = ", "))
-
- ## Write script to file (avoid issues with command line quoting
- ## on R 3.4.3)
- installFile <- tempfile("packrat-bootstrap", fileext = ".R")
- writeLines(installCmd, con = installFile)
- on.exit(unlink(installFile), add = TRUE)
-
- fullCmd <- paste(
- surround(file.path(R.home("bin"), "R"), with = "\""),
- "--vanilla",
- "--slave",
- "-f",
- surround(installFile, with = "\"")
- )
- system(fullCmd)
-
- ## Tag the installed packrat so we know it's managed by packrat
- ## TODO: should this be taking information from the lockfile? this is a bit awkward
- ## because we're taking an un-annotated packrat source tarball and simply assuming it's now
- ## an 'installed from source' version
-
- ## -- InstallAgent -- ##
- installAgent <- "InstallAgent: packrat 0.5.0"
-
- ## -- InstallSource -- ##
- installSource <- "InstallSource: source"
-
- packratDescPath <- file.path(lib, "packrat", "DESCRIPTION")
- DESCRIPTION <- readLines(packratDescPath)
- DESCRIPTION <- c(DESCRIPTION, installAgent, installSource)
- cat(DESCRIPTION, file = packratDescPath, sep = "\n")
-
- # Otherwise, continue on as normal
- message("> Attaching packrat")
- library("packrat", character.only = TRUE, lib.loc = lib)
-
- message("> Restoring library")
- if (needsRestore)
- packrat::restore(prompt = FALSE, restart = FALSE)
-
- # If the environment allows us to restart, do so with a call to restore
- restart <- getOption("restart")
- if (!is.null(restart)) {
- message("> Packrat bootstrap successfully completed. ",
- "Restarting R and entering packrat mode...")
- return(restart())
- }
-
- # Callers (source-erers) can define this hidden variable to make sure we don't enter packrat mode
- # Primarily useful for testing
- if (!exists(".__DONT_ENTER_PACKRAT_MODE__.") && interactive()) {
- message("> Packrat bootstrap successfully completed. Entering packrat mode...")
- packrat::on()
- }
-
- Sys.unsetenv("RSTUDIO_PACKRAT_BOOTSTRAP")
-
- }
-
-})
diff --git a/packrat/packrat.lock b/packrat/packrat.lock
deleted file mode 100644
index baedf962b..000000000
--- a/packrat/packrat.lock
+++ /dev/null
@@ -1,628 +0,0 @@
-PackratFormat: 1.4
-PackratVersion: 0.5.0
-RVersion: 3.5.1
-Repos: CRAN=https://cran.rstudio.com/
-
-Package: BH
-Source: CRAN
-Version: 1.66.0-1
-Hash: 4cc8883584b955ed01f38f68bc03af6d
-
-Package: DBI
-Source: CRAN
-Version: 1.0.0
-Hash: 6abedd7919c4457604c0aa44529a6683
-
-Package: Lahman
-Source: CRAN
-Version: 6.0-0
-Hash: b06cd9537f6402da11e77943086268d9
-Requires: dplyr
-
-Package: R6
-Source: CRAN
-Version: 2.4.0
-Hash: 948a547c484e5bea15eee76cc53cce3f
-
-Package: RColorBrewer
-Source: CRAN
-Version: 1.1-2
-Hash: c0d56cd15034f395874c870141870c25
-
-Package: Rcpp
-Source: CRAN
-Version: 1.0.0
-Hash: c7273c0f0bc9f5e41f4c52a8cf571f0f
-
-Package: askpass
-Source: CRAN
-Version: 1.1
-Hash: 6f6c430e3cd0dd7d48f447700f4d7e7f
-Requires: sys
-
-Package: assertthat
-Source: CRAN
-Version: 0.2.0
-Hash: e8805df54c65ac96d50235c44a82615c
-
-Package: backports
-Source: CRAN
-Version: 1.1.3
-Hash: a0b8191e6bd2fe71aadd4678bb8f3c98
-
-Package: base64enc
-Source: CRAN
-Version: 0.1-3
-Hash: c590d29e555926af053055e23ee79efb
-
-Package: bindr
-Source: CRAN
-Version: 0.1.1
-Hash: 76578c5f543a6ecbc1365d6445f9ebf7
-
-Package: bindrcpp
-Source: CRAN
-Version: 0.2.2
-Hash: 8ce499301f0dc5c7ff69f0b42e33f5c1
-Requires: Rcpp, bindr, plogr
-
-Package: bookdown
-Source: github
-Version: 0.9.1
-Hash: 80ba6a2d3203a0f846fbcd4ab2d4d549
-Requires: htmltools, knitr, rmarkdown, tinytex, xfun, yaml
-GithubRepo: bookdown
-GithubUsername: rstudio
-GithubRef: master
-GithubSha1: 44af2c07a1e1e7d096b2198c5118b3bfd1d39d39
-RemoteHost: api.github.com
-RemoteRepo: bookdown
-RemoteUsername: rstudio
-RemoteRef: master
-RemoteSha: 44af2c07a1e1e7d096b2198c5118b3bfd1d39d39
-
-Package: broom
-Source: CRAN
-Version: 0.5.1
-Hash: f170bc989c523e039487511e87c1854f
-Requires: backports, dplyr, generics, purrr, reshape2, stringr, tibble,
- tidyr
-
-Package: callr
-Source: CRAN
-Version: 3.1.1
-Hash: 461cdebafe2c1cfc23ddc37527633185
-Requires: R6, processx
-
-Package: cellranger
-Source: CRAN
-Version: 1.1.0
-Hash: be9d203e7849f73818b36f93e9273c2c
-Requires: rematch, tibble
-
-Package: cli
-Source: CRAN
-Version: 1.0.1
-Hash: a742a3229dbf7085c3a737af10e5065b
-Requires: assertthat, crayon
-
-Package: clipr
-Source: CRAN
-Version: 0.4.1
-Hash: caf20ae357bfa2ed50e0e7db267f69ce
-
-Package: colorspace
-Source: CRAN
-Version: 1.4-0
-Hash: 5eef58a5bcfd315a326eeaf43720cd26
-
-Package: condvis
-Source: CRAN
-Version: 0.5-1
-Hash: f70f2686230de80de9025961fa3b3043
-
-Package: crayon
-Source: CRAN
-Version: 1.3.4
-Hash: ff2840dd9b0d563fc80377a5a45510cd
-
-Package: crosstalk
-Source: CRAN
-Version: 1.0.0
-Hash: c13adea5906fbe2becfcb5f843b26749
-Requires: R6, ggplot2, htmltools, jsonlite, lazyeval, shiny
-
-Package: curl
-Source: CRAN
-Version: 3.2
-Hash: 82a7cf5bb702ef52329b6d23ea6132a7
-
-Package: datos
-Source: github
-Version: 0.0.0.9002
-Hash: 25c2e31e7bca06f900fa1163ae080bd9
-GithubRepo: datos
-GithubUsername: pachamaltese
-GithubRef: master
-GithubSha1: 61e2cc8c2680e279adce4cf7fd341e1464d1ec2e
-RemoteHost: api.github.com
-RemoteRepo: datos
-RemoteUsername: pachamaltese
-RemoteRef: master
-RemoteSha: 61e2cc8c2680e279adce4cf7fd341e1464d1ec2e
-
-Package: dbplyr
-Source: CRAN
-Version: 1.3.0
-Hash: b42cd2910f0494b711ee5ef5fe2a71c2
-Requires: DBI, R6, assertthat, dplyr, glue, purrr, rlang, tibble,
- tidyselect
-
-Package: digest
-Source: CRAN
-Version: 0.6.18
-Hash: 65f62365ec69ddd17230d2ffe891a6ab
-
-Package: dplyr
-Source: CRAN
-Version: 0.7.8
-Hash: d6e576944199cba782a471015a822848
-Requires: BH, R6, Rcpp, assertthat, bindrcpp, glue, magrittr,
- pkgconfig, plogr, rlang, tibble, tidyselect
-
-Package: evaluate
-Source: CRAN
-Version: 0.13
-Hash: 1853557a0ea0db2daebf597c7ce58d70
-
-Package: fansi
-Source: CRAN
-Version: 0.4.0
-Hash: f147621f72b561485bfffcae78c4f5d5
-
-Package: forcats
-Source: CRAN
-Version: 0.3.0
-Hash: 770f3834b97a2c429bdecb7a5f27eb25
-Requires: magrittr, rlang, tibble
-
-Package: fs
-Source: CRAN
-Version: 1.2.6
-Hash: 8ffb8b293a18e26e435465307cc47f75
-Requires: Rcpp
-
-Package: gapminder
-Source: CRAN
-Version: 0.3.0
-Hash: 7b445403dbd33a7e88b8a10029f1a078
-Requires: tibble
-
-Package: generics
-Source: CRAN
-Version: 0.0.2
-Hash: 4aaf002dd434e8c854611c5d11a1d58e
-
-Package: ggplot2
-Source: CRAN
-Version: 3.1.0
-Hash: ef541b05dda10b209d509b5bbaf46ea3
-Requires: digest, gtable, lazyeval, plyr, reshape2, rlang, scales,
- tibble, viridisLite, withr
-
-Package: ggrepel
-Source: github
-Version: 0.8.0.9000
-Hash: 4b93da90ed5af78a0cf99e00e3f29d96
-Requires: Rcpp, ggplot2, scales
-GithubRepo: ggrepel
-GithubUsername: slowkow
-GithubRef: master
-GithubSha1: 8dfc84a6d3724533cea315b578b0e6e5b6f7742b
-RemoteHost: api.github.com
-RemoteRepo: ggrepel
-RemoteUsername: slowkow
-RemoteRef: master
-RemoteSha: 8dfc84a6d3724533cea315b578b0e6e5b6f7742b
-
-Package: glue
-Source: CRAN
-Version: 1.3.0
-Hash: 1fbde6dec830370be696eee8ef31c9e4
-
-Package: gridExtra
-Source: CRAN
-Version: 2.3
-Hash: fa977bc1aab5588a08123b10ceb1ad3d
-Requires: gtable
-
-Package: gtable
-Source: CRAN
-Version: 0.2.0
-Hash: cd78381a9d3fea966ac39bd0daaf5554
-
-Package: haven
-Source: CRAN
-Version: 2.1.0
-Hash: 59e7a7f8304285e0e9f9691b34a82a33
-Requires: Rcpp, forcats, hms, readr, tibble
-
-Package: hexbin
-Source: CRAN
-Version: 1.27.2
-Hash: db6c71309772ea1f664081576e5b943d
-
-Package: highr
-Source: CRAN
-Version: 0.7
-Hash: 20757f5c393ed0ecf96c9e8e6d8d514c
-
-Package: hms
-Source: CRAN
-Version: 0.4.2
-Hash: b4096a4f6a6736138e9a825c2baaacf0
-Requires: pkgconfig, rlang
-
-Package: htmltools
-Source: CRAN
-Version: 0.3.6
-Hash: 9707abea0a9b7406e98fb1242e97e1f6
-Requires: Rcpp, digest
-
-Package: htmlwidgets
-Source: CRAN
-Version: 1.3
-Hash: 17a2248b5e40383a1cb1a4e4cb5f9c7a
-Requires: htmltools, jsonlite, yaml
-
-Package: httpuv
-Source: CRAN
-Version: 1.4.5.1
-Hash: b754445499d0b3c8c237e1a5e30b568b
-Requires: BH, Rcpp, later, promises
-
-Package: httr
-Source: CRAN
-Version: 1.4.0
-Hash: 62d62d3ffcc9a34411b6e35a813f72dd
-Requires: R6, curl, jsonlite, mime, openssl
-
-Package: jpeg
-Source: CRAN
-Version: 0.1-8
-Hash: 189af3df9864c6aa8546033f08ba9358
-
-Package: jsonlite
-Source: CRAN
-Version: 1.5
-Hash: 9c51936d8dd00b2f1d4fe9d10499694c
-
-Package: knitr
-Source: CRAN
-Version: 1.21
-Hash: 05d92a30fe7f149fef5e82428cbbe0d7
-Requires: evaluate, highr, markdown, stringr, xfun, yaml
-
-Package: labeling
-Source: CRAN
-Version: 0.3
-Hash: ecf589b42cd284b03a4beb9665482d3e
-
-Package: later
-Source: CRAN
-Version: 0.7.5
-Hash: 46d61526aa5163d70905211e0f1b5639
-Requires: BH, Rcpp, rlang
-
-Package: lazyeval
-Source: CRAN
-Version: 0.2.1
-Hash: 88926ad9c43581fd0822a37c8ed09f05
-
-Package: leaflet
-Source: CRAN
-Version: 2.0.2
-Hash: da55402e4875c0253df918df0e97d4c4
-Requires: RColorBrewer, base64enc, crosstalk, htmltools, htmlwidgets,
- magrittr, markdown, png, raster, scales, sp, viridis
-
-Package: lubridate
-Source: CRAN
-Version: 1.7.4
-Hash: a7c783782f0e50be33b31f859c11333e
-Requires: Rcpp, stringr
-
-Package: magrittr
-Source: CRAN
-Version: 1.5
-Hash: bdc4d48c3135e8f3b399536ddf160df4
-
-Package: maps
-Source: CRAN
-Version: 3.3.0
-Hash: 0815ed94aca05c7aeb177ebddd4ee23b
-
-Package: markdown
-Source: CRAN
-Version: 0.9
-Hash: 730f688930cef3223d59bd8aef679ab9
-Requires: mime
-
-Package: microbenchmark
-Source: CRAN
-Version: 1.4-6
-Hash: 20ab0720181655b9a7d079a04c645782
-
-Package: mime
-Source: CRAN
-Version: 0.6
-Hash: 2ed8f98b8284ad733f3907fc6e2f1334
-
-Package: modelr
-Source: CRAN
-Version: 0.1.4
-Hash: 6738331e515f0057ea409d4b02dbbbbe
-Requires: broom, dplyr, magrittr, purrr, rlang, tibble, tidyr
-
-Package: munsell
-Source: CRAN
-Version: 0.5.0
-Hash: 38d0efee9bb99bef143bde41c4ce715c
-Requires: colorspace
-
-Package: nycflights13
-Source: CRAN
-Version: 1.0.0
-Hash: 3b30804d13323596789d077852220a7e
-Requires: tibble
-
-Package: openssl
-Source: CRAN
-Version: 1.2.1
-Hash: c3c2751a977ed402ec7a2a32698fb533
-Requires: askpass
-
-Package: packrat
-Source: CRAN
-Version: 0.5.0
-Hash: 498643e765d1442ba7b1160a1df3abf9
-
-Package: pillar
-Source: CRAN
-Version: 1.3.1
-Hash: 9ed4c2a5d3047bfba3e852ad5e806d91
-Requires: cli, crayon, fansi, rlang, utf8
-
-Package: pkgconfig
-Source: CRAN
-Version: 2.0.2
-Hash: b0fd6ed908e150b77e5f00c6478bd58c
-
-Package: plogr
-Source: CRAN
-Version: 0.2.0
-Hash: 81a8008a5e7858552503935f1abe48aa
-
-Package: plyr
-Source: CRAN
-Version: 1.8.4
-Hash: ec185c885aab7ec91693d78c20cb5d1a
-Requires: Rcpp
-
-Package: png
-Source: CRAN
-Version: 0.1-7
-Hash: 421d7d6e0fb4bd885ecbd909b6456b8b
-
-Package: processx
-Source: CRAN
-Version: 3.2.1
-Hash: fdc6a66626b75f96ee28ffc770d9ebd7
-Requires: R6, ps
-
-Package: promises
-Source: CRAN
-Version: 1.0.1
-Hash: f96ac20f3961868f8d6ec63a3bf3566f
-Requires: R6, Rcpp, later, magrittr, rlang
-
-Package: pryr
-Source: CRAN
-Version: 0.1.4
-Hash: bc36a436c3fc09f94f4b742c09651f49
-Requires: Rcpp, stringr
-
-Package: ps
-Source: CRAN
-Version: 1.3.0
-Hash: 1d4cae95887ffe5b1a22bea5994476cd
-
-Package: purrr
-Source: CRAN
-Version: 0.2.5
-Hash: 8b0c16db10c7e20b70cd37779a673a8b
-Requires: magrittr, rlang, tibble
-
-Package: raster
-Source: CRAN
-Version: 2.8-19
-Hash: 33d7bac6425400dd23597f866a01f25e
-Requires: Rcpp, sp
-
-Package: readr
-Source: CRAN
-Version: 1.3.1
-Hash: ed1b5520a0df4007bc971658ee543b00
-Requires: BH, R6, Rcpp, clipr, crayon, hms, tibble
-
-Package: readxl
-Source: CRAN
-Version: 1.1.0
-Hash: 0497885c7882757874d6eb0650a6dcff
-Requires: Rcpp, cellranger, tibble
-
-Package: rematch
-Source: CRAN
-Version: 1.0.1
-Hash: ad4faf59e7611117ff165817074c50c7
-
-Package: reprex
-Source: CRAN
-Version: 0.2.1
-Hash: b30c7fbcb528a71d7ffcd07c9982589d
-Requires: callr, clipr, fs, rlang, rmarkdown, whisker, withr
-
-Package: reshape2
-Source: CRAN
-Version: 1.4.3
-Hash: c950c8ac85b81209635acb3ce21b4cce
-Requires: Rcpp, plyr, stringr
-
-Package: rlang
-Source: CRAN
-Version: 0.3.1
-Hash: c8403f4c6f405ad03156f46dca6702e2
-
-Package: rmarkdown
-Source: CRAN
-Version: 1.11
-Hash: a30b0c41b60d981f41dc8c98f2136297
-Requires: base64enc, evaluate, htmltools, jsonlite, knitr, mime,
- stringr, tinytex, yaml
-
-Package: rstudioapi
-Source: CRAN
-Version: 0.9.0
-Hash: e5e648a0944df6ea634d8173d09e236f
-
-Package: rvest
-Source: CRAN
-Version: 0.3.2
-Hash: c69f7526520bad66fd2111ebe8b1364b
-Requires: httr, magrittr, selectr, xml2
-
-Package: scales
-Source: CRAN
-Version: 1.0.0
-Hash: 7d9b717abcec656ae7c5c982d72b75e5
-Requires: R6, RColorBrewer, Rcpp, labeling, munsell, viridisLite
-
-Package: selectr
-Source: CRAN
-Version: 0.4-1
-Hash: b12802c11e35dec9d16a74d30ed0f3ed
-Requires: R6, stringr
-
-Package: shiny
-Source: CRAN
-Version: 1.2.0
-Hash: 6853126283ff0572d9f370a1520ac831
-Requires: R6, crayon, digest, htmltools, httpuv, jsonlite, later, mime,
- promises, rlang, sourcetools, xtable
-
-Package: sourcetools
-Source: CRAN
-Version: 0.1.7
-Hash: d093478ac90064e670cd4bf1a99b47b6
-
-Package: sp
-Source: CRAN
-Version: 1.3-1
-Hash: 01decf1327caff54d7822434d07fa959
-
-Package: stringi
-Source: CRAN
-Version: 1.3.1
-Hash: 2618ed9608445399e7c431b0e80bfbfd
-
-Package: stringr
-Source: CRAN
-Version: 1.4.0
-Hash: 67da32dbb2a7a16f2ef124336358e54a
-Requires: glue, magrittr, stringi
-
-Package: sys
-Source: CRAN
-Version: 2.1
-Hash: 5ce312d2f816b21f602cb81fe4659a0b
-
-Package: tibble
-Source: CRAN
-Version: 2.0.1
-Hash: d2a00b9a314cfad8f6b51e2c97aaff5c
-Requires: cli, crayon, fansi, pillar, pkgconfig, rlang
-
-Package: tidyr
-Source: CRAN
-Version: 0.8.2
-Hash: 9ff92b9b3c11dfcd94d179b75b85c668
-Requires: Rcpp, dplyr, glue, magrittr, purrr, rlang, stringi, tibble,
- tidyselect
-
-Package: tidyselect
-Source: CRAN
-Version: 0.2.5
-Hash: fad1cf10c5c4996fca6ca68e0716d2e6
-Requires: Rcpp, glue, purrr, rlang
-
-Package: tidyverse
-Source: CRAN
-Version: 1.2.1
-Hash: 1b090209cb20b6fc6eba75de8b7f0b53
-Requires: broom, cli, crayon, dbplyr, dplyr, forcats, ggplot2, haven,
- hms, httr, jsonlite, lubridate, magrittr, modelr, purrr, readr,
- readxl, reprex, rlang, rstudioapi, rvest, stringr, tibble, tidyr,
- xml2
-
-Package: tinytex
-Source: CRAN
-Version: 0.10
-Hash: 2a5a6acd93f9936d957880cb9aab7979
-Requires: xfun
-
-Package: utf8
-Source: CRAN
-Version: 1.1.4
-Hash: f3f97ce59092abc8ed3fd098a59e236c
-
-Package: viridis
-Source: CRAN
-Version: 0.5.1
-Hash: 39edaec2078b4fc928afb73cc1ce6625
-Requires: ggplot2, gridExtra, viridisLite
-
-Package: viridisLite
-Source: CRAN
-Version: 0.3.0
-Hash: 78bb072c4f9e729a283d4c40ec93f9c6
-
-Package: whisker
-Source: CRAN
-Version: 0.3-2
-Hash: 803d662762e532705c2c066a82d066e7
-
-Package: withr
-Source: CRAN
-Version: 2.1.2
-Hash: d534108bcd5f34ec73e9eb523751ba20
-
-Package: xfun
-Source: CRAN
-Version: 0.4
-Hash: 76004125b45195c0330ec71904849995
-
-Package: xml2
-Source: CRAN
-Version: 1.2.0
-Hash: 3f00e5347a6d7ccad2237fe1bc1df6d0
-Requires: Rcpp
-
-Package: xtable
-Source: CRAN
-Version: 1.8-3
-Hash: 91199102994584c5f0e8cbba5582ecc4
-
-Package: yaml
-Source: CRAN
-Version: 2.2.0
-Hash: a5ad5616d83d89f8d84cbf3cf4034e13
diff --git a/packrat/packrat.opts b/packrat/packrat.opts
deleted file mode 100644
index 1ecf20ce9..000000000
--- a/packrat/packrat.opts
+++ /dev/null
@@ -1,19 +0,0 @@
-auto.snapshot: FALSE
-use.cache: FALSE
-print.banner.on.startup: auto
-vcs.ignore.lib: TRUE
-vcs.ignore.src: FALSE
-external.packages:
-local.repos:
-load.external.packages.on.startup: TRUE
-ignored.packages:
-ignored.directories:
- data
- inst
-quiet.package.installation: TRUE
-snapshot.recommended.packages: FALSE
-snapshot.fields:
- Imports
- Depends
- LinkingTo
-symlink.system.packages: TRUE
diff --git a/packrat/src/BH/BH_1.66.0-1.tar.gz b/packrat/src/BH/BH_1.66.0-1.tar.gz
deleted file mode 100644
index 54f240d86..000000000
Binary files a/packrat/src/BH/BH_1.66.0-1.tar.gz and /dev/null differ
diff --git a/packrat/src/DBI/DBI_1.0.0.tar.gz b/packrat/src/DBI/DBI_1.0.0.tar.gz
deleted file mode 100644
index bdccced1b..000000000
Binary files a/packrat/src/DBI/DBI_1.0.0.tar.gz and /dev/null differ
diff --git a/packrat/src/Lahman/Lahman_6.0-0.tar.gz b/packrat/src/Lahman/Lahman_6.0-0.tar.gz
deleted file mode 100644
index b9d8b992c..000000000
Binary files a/packrat/src/Lahman/Lahman_6.0-0.tar.gz and /dev/null differ
diff --git a/packrat/src/R6/R6_2.4.0.tar.gz b/packrat/src/R6/R6_2.4.0.tar.gz
deleted file mode 100644
index e79f26941..000000000
Binary files a/packrat/src/R6/R6_2.4.0.tar.gz and /dev/null differ
diff --git a/packrat/src/RColorBrewer/RColorBrewer_1.1-2.tar.gz b/packrat/src/RColorBrewer/RColorBrewer_1.1-2.tar.gz
deleted file mode 100644
index ef04e6b81..000000000
Binary files a/packrat/src/RColorBrewer/RColorBrewer_1.1-2.tar.gz and /dev/null differ
diff --git a/packrat/src/Rcpp/Rcpp_1.0.0.tar.gz b/packrat/src/Rcpp/Rcpp_1.0.0.tar.gz
deleted file mode 100644
index b202fd6d4..000000000
Binary files a/packrat/src/Rcpp/Rcpp_1.0.0.tar.gz and /dev/null differ
diff --git a/packrat/src/askpass/askpass_1.1.tar.gz b/packrat/src/askpass/askpass_1.1.tar.gz
deleted file mode 100644
index d8cc7434f..000000000
Binary files a/packrat/src/askpass/askpass_1.1.tar.gz and /dev/null differ
diff --git a/packrat/src/assertthat/assertthat_0.2.0.tar.gz b/packrat/src/assertthat/assertthat_0.2.0.tar.gz
deleted file mode 100644
index a48c9aa6a..000000000
Binary files a/packrat/src/assertthat/assertthat_0.2.0.tar.gz and /dev/null differ
diff --git a/packrat/src/backports/backports_1.1.3.tar.gz b/packrat/src/backports/backports_1.1.3.tar.gz
deleted file mode 100644
index b4ec2c0e7..000000000
Binary files a/packrat/src/backports/backports_1.1.3.tar.gz and /dev/null differ
diff --git a/packrat/src/base64enc/base64enc_0.1-3.tar.gz b/packrat/src/base64enc/base64enc_0.1-3.tar.gz
deleted file mode 100644
index 07c27825f..000000000
Binary files a/packrat/src/base64enc/base64enc_0.1-3.tar.gz and /dev/null differ
diff --git a/packrat/src/bindr/bindr_0.1.1.tar.gz b/packrat/src/bindr/bindr_0.1.1.tar.gz
deleted file mode 100644
index 2b3d27602..000000000
Binary files a/packrat/src/bindr/bindr_0.1.1.tar.gz and /dev/null differ
diff --git a/packrat/src/bindrcpp/bindrcpp_0.2.2.tar.gz b/packrat/src/bindrcpp/bindrcpp_0.2.2.tar.gz
deleted file mode 100644
index a3894a29c..000000000
Binary files a/packrat/src/bindrcpp/bindrcpp_0.2.2.tar.gz and /dev/null differ
diff --git a/packrat/src/broom/broom_0.5.1.tar.gz b/packrat/src/broom/broom_0.5.1.tar.gz
deleted file mode 100644
index c9a632aaf..000000000
Binary files a/packrat/src/broom/broom_0.5.1.tar.gz and /dev/null differ
diff --git a/packrat/src/callr/callr_3.1.1.tar.gz b/packrat/src/callr/callr_3.1.1.tar.gz
deleted file mode 100644
index 468157fc0..000000000
Binary files a/packrat/src/callr/callr_3.1.1.tar.gz and /dev/null differ
diff --git a/packrat/src/cellranger/cellranger_1.1.0.tar.gz b/packrat/src/cellranger/cellranger_1.1.0.tar.gz
deleted file mode 100644
index 32d4f6631..000000000
Binary files a/packrat/src/cellranger/cellranger_1.1.0.tar.gz and /dev/null differ
diff --git a/packrat/src/cli/cli_1.0.1.tar.gz b/packrat/src/cli/cli_1.0.1.tar.gz
deleted file mode 100644
index d602cdd79..000000000
Binary files a/packrat/src/cli/cli_1.0.1.tar.gz and /dev/null differ
diff --git a/packrat/src/clipr/clipr_0.4.1.tar.gz b/packrat/src/clipr/clipr_0.4.1.tar.gz
deleted file mode 100644
index 8af352a3c..000000000
Binary files a/packrat/src/clipr/clipr_0.4.1.tar.gz and /dev/null differ
diff --git a/packrat/src/colorspace/colorspace_1.4-0.tar.gz b/packrat/src/colorspace/colorspace_1.4-0.tar.gz
deleted file mode 100644
index 7b8962153..000000000
Binary files a/packrat/src/colorspace/colorspace_1.4-0.tar.gz and /dev/null differ
diff --git a/packrat/src/condvis/condvis_0.5-1.tar.gz b/packrat/src/condvis/condvis_0.5-1.tar.gz
deleted file mode 100644
index fdd420e54..000000000
Binary files a/packrat/src/condvis/condvis_0.5-1.tar.gz and /dev/null differ
diff --git a/packrat/src/crayon/crayon_1.3.4.tar.gz b/packrat/src/crayon/crayon_1.3.4.tar.gz
deleted file mode 100644
index 38f52226f..000000000
Binary files a/packrat/src/crayon/crayon_1.3.4.tar.gz and /dev/null differ
diff --git a/packrat/src/crosstalk/crosstalk_1.0.0.tar.gz b/packrat/src/crosstalk/crosstalk_1.0.0.tar.gz
deleted file mode 100644
index 21cf4ab1c..000000000
Binary files a/packrat/src/crosstalk/crosstalk_1.0.0.tar.gz and /dev/null differ
diff --git a/packrat/src/curl/curl_3.2.tar.gz b/packrat/src/curl/curl_3.2.tar.gz
deleted file mode 100644
index fe9341faf..000000000
Binary files a/packrat/src/curl/curl_3.2.tar.gz and /dev/null differ
diff --git a/packrat/src/datos/61e2cc8c2680e279adce4cf7fd341e1464d1ec2e.tar.gz b/packrat/src/datos/61e2cc8c2680e279adce4cf7fd341e1464d1ec2e.tar.gz
deleted file mode 100644
index 6bbaedd7e..000000000
Binary files a/packrat/src/datos/61e2cc8c2680e279adce4cf7fd341e1464d1ec2e.tar.gz and /dev/null differ
diff --git a/packrat/src/dbplyr/dbplyr_1.3.0.tar.gz b/packrat/src/dbplyr/dbplyr_1.3.0.tar.gz
deleted file mode 100644
index 363f6040a..000000000
Binary files a/packrat/src/dbplyr/dbplyr_1.3.0.tar.gz and /dev/null differ
diff --git a/packrat/src/digest/digest_0.6.18.tar.gz b/packrat/src/digest/digest_0.6.18.tar.gz
deleted file mode 100644
index 8f1551008..000000000
Binary files a/packrat/src/digest/digest_0.6.18.tar.gz and /dev/null differ
diff --git a/packrat/src/dplyr/dplyr_0.7.8.tar.gz b/packrat/src/dplyr/dplyr_0.7.8.tar.gz
deleted file mode 100644
index 58c4c8efa..000000000
Binary files a/packrat/src/dplyr/dplyr_0.7.8.tar.gz and /dev/null differ
diff --git a/packrat/src/evaluate/evaluate_0.13.tar.gz b/packrat/src/evaluate/evaluate_0.13.tar.gz
deleted file mode 100644
index f274476d9..000000000
Binary files a/packrat/src/evaluate/evaluate_0.13.tar.gz and /dev/null differ
diff --git a/packrat/src/fansi/fansi_0.4.0.tar.gz b/packrat/src/fansi/fansi_0.4.0.tar.gz
deleted file mode 100644
index fa12c3abb..000000000
Binary files a/packrat/src/fansi/fansi_0.4.0.tar.gz and /dev/null differ
diff --git a/packrat/src/forcats/forcats_0.3.0.tar.gz b/packrat/src/forcats/forcats_0.3.0.tar.gz
deleted file mode 100644
index 076a2a490..000000000
Binary files a/packrat/src/forcats/forcats_0.3.0.tar.gz and /dev/null differ
diff --git a/packrat/src/fs/fs_1.2.6.tar.gz b/packrat/src/fs/fs_1.2.6.tar.gz
deleted file mode 100644
index deaafa04e..000000000
Binary files a/packrat/src/fs/fs_1.2.6.tar.gz and /dev/null differ
diff --git a/packrat/src/gapminder/gapminder_0.3.0.tar.gz b/packrat/src/gapminder/gapminder_0.3.0.tar.gz
deleted file mode 100644
index c617e20b7..000000000
Binary files a/packrat/src/gapminder/gapminder_0.3.0.tar.gz and /dev/null differ
diff --git a/packrat/src/generics/generics_0.0.2.tar.gz b/packrat/src/generics/generics_0.0.2.tar.gz
deleted file mode 100644
index c143f40cc..000000000
Binary files a/packrat/src/generics/generics_0.0.2.tar.gz and /dev/null differ
diff --git a/packrat/src/ggplot2/ggplot2_3.1.0.tar.gz b/packrat/src/ggplot2/ggplot2_3.1.0.tar.gz
deleted file mode 100644
index 5ea113e52..000000000
Binary files a/packrat/src/ggplot2/ggplot2_3.1.0.tar.gz and /dev/null differ
diff --git a/packrat/src/ggrepel/8dfc84a6d3724533cea315b578b0e6e5b6f7742b.tar.gz b/packrat/src/ggrepel/8dfc84a6d3724533cea315b578b0e6e5b6f7742b.tar.gz
deleted file mode 100644
index 4598dba7b..000000000
Binary files a/packrat/src/ggrepel/8dfc84a6d3724533cea315b578b0e6e5b6f7742b.tar.gz and /dev/null differ
diff --git a/packrat/src/glue/glue_1.3.0.tar.gz b/packrat/src/glue/glue_1.3.0.tar.gz
deleted file mode 100644
index 8cc161805..000000000
Binary files a/packrat/src/glue/glue_1.3.0.tar.gz and /dev/null differ
diff --git a/packrat/src/gridExtra/gridExtra_2.3.tar.gz b/packrat/src/gridExtra/gridExtra_2.3.tar.gz
deleted file mode 100644
index c5ebbb511..000000000
Binary files a/packrat/src/gridExtra/gridExtra_2.3.tar.gz and /dev/null differ
diff --git a/packrat/src/gtable/gtable_0.2.0.tar.gz b/packrat/src/gtable/gtable_0.2.0.tar.gz
deleted file mode 100644
index 49c35fa46..000000000
Binary files a/packrat/src/gtable/gtable_0.2.0.tar.gz and /dev/null differ
diff --git a/packrat/src/haven/haven_2.1.0.tar.gz b/packrat/src/haven/haven_2.1.0.tar.gz
deleted file mode 100644
index b56987aed..000000000
Binary files a/packrat/src/haven/haven_2.1.0.tar.gz and /dev/null differ
diff --git a/packrat/src/hexbin/hexbin_1.27.2.tar.gz b/packrat/src/hexbin/hexbin_1.27.2.tar.gz
deleted file mode 100644
index 0a62b1b56..000000000
Binary files a/packrat/src/hexbin/hexbin_1.27.2.tar.gz and /dev/null differ
diff --git a/packrat/src/highr/highr_0.7.tar.gz b/packrat/src/highr/highr_0.7.tar.gz
deleted file mode 100644
index a26403245..000000000
Binary files a/packrat/src/highr/highr_0.7.tar.gz and /dev/null differ
diff --git a/packrat/src/hms/hms_0.4.2.tar.gz b/packrat/src/hms/hms_0.4.2.tar.gz
deleted file mode 100644
index 67bea0908..000000000
Binary files a/packrat/src/hms/hms_0.4.2.tar.gz and /dev/null differ
diff --git a/packrat/src/htmltools/htmltools_0.3.6.tar.gz b/packrat/src/htmltools/htmltools_0.3.6.tar.gz
deleted file mode 100644
index d92d223f0..000000000
Binary files a/packrat/src/htmltools/htmltools_0.3.6.tar.gz and /dev/null differ
diff --git a/packrat/src/htmlwidgets/htmlwidgets_1.3.tar.gz b/packrat/src/htmlwidgets/htmlwidgets_1.3.tar.gz
deleted file mode 100644
index a330e6b98..000000000
Binary files a/packrat/src/htmlwidgets/htmlwidgets_1.3.tar.gz and /dev/null differ
diff --git a/packrat/src/httpuv/httpuv_1.4.5.1.tar.gz b/packrat/src/httpuv/httpuv_1.4.5.1.tar.gz
deleted file mode 100644
index b8b694af8..000000000
Binary files a/packrat/src/httpuv/httpuv_1.4.5.1.tar.gz and /dev/null differ
diff --git a/packrat/src/httr/httr_1.4.0.tar.gz b/packrat/src/httr/httr_1.4.0.tar.gz
deleted file mode 100644
index 1948a2278..000000000
Binary files a/packrat/src/httr/httr_1.4.0.tar.gz and /dev/null differ
diff --git a/packrat/src/jpeg/jpeg_0.1-8.tar.gz b/packrat/src/jpeg/jpeg_0.1-8.tar.gz
deleted file mode 100644
index 4290d4d5a..000000000
Binary files a/packrat/src/jpeg/jpeg_0.1-8.tar.gz and /dev/null differ
diff --git a/packrat/src/jsonlite/jsonlite_1.5.tar.gz b/packrat/src/jsonlite/jsonlite_1.5.tar.gz
deleted file mode 100644
index e159a7e7c..000000000
Binary files a/packrat/src/jsonlite/jsonlite_1.5.tar.gz and /dev/null differ
diff --git a/packrat/src/knitr/knitr_1.21.tar.gz b/packrat/src/knitr/knitr_1.21.tar.gz
deleted file mode 100644
index 63bf4abf0..000000000
Binary files a/packrat/src/knitr/knitr_1.21.tar.gz and /dev/null differ
diff --git a/packrat/src/labeling/labeling_0.3.tar.gz b/packrat/src/labeling/labeling_0.3.tar.gz
deleted file mode 100644
index 0e476124c..000000000
Binary files a/packrat/src/labeling/labeling_0.3.tar.gz and /dev/null differ
diff --git a/packrat/src/later/later_0.7.5.tar.gz b/packrat/src/later/later_0.7.5.tar.gz
deleted file mode 100644
index bed25a31c..000000000
Binary files a/packrat/src/later/later_0.7.5.tar.gz and /dev/null differ
diff --git a/packrat/src/lazyeval/lazyeval_0.2.1.tar.gz b/packrat/src/lazyeval/lazyeval_0.2.1.tar.gz
deleted file mode 100644
index 6296f8bbc..000000000
Binary files a/packrat/src/lazyeval/lazyeval_0.2.1.tar.gz and /dev/null differ
diff --git a/packrat/src/leaflet/leaflet_2.0.2.tar.gz b/packrat/src/leaflet/leaflet_2.0.2.tar.gz
deleted file mode 100644
index e80620630..000000000
Binary files a/packrat/src/leaflet/leaflet_2.0.2.tar.gz and /dev/null differ
diff --git a/packrat/src/lubridate/lubridate_1.7.4.tar.gz b/packrat/src/lubridate/lubridate_1.7.4.tar.gz
deleted file mode 100644
index e9a2b8f08..000000000
Binary files a/packrat/src/lubridate/lubridate_1.7.4.tar.gz and /dev/null differ
diff --git a/packrat/src/magrittr/magrittr_1.5.tar.gz b/packrat/src/magrittr/magrittr_1.5.tar.gz
deleted file mode 100644
index e2f986040..000000000
Binary files a/packrat/src/magrittr/magrittr_1.5.tar.gz and /dev/null differ
diff --git a/packrat/src/maps/maps_3.3.0.tar.gz b/packrat/src/maps/maps_3.3.0.tar.gz
deleted file mode 100644
index 2f31408ee..000000000
Binary files a/packrat/src/maps/maps_3.3.0.tar.gz and /dev/null differ
diff --git a/packrat/src/markdown/markdown_0.9.tar.gz b/packrat/src/markdown/markdown_0.9.tar.gz
deleted file mode 100644
index c8588351b..000000000
Binary files a/packrat/src/markdown/markdown_0.9.tar.gz and /dev/null differ
diff --git a/packrat/src/microbenchmark/microbenchmark_1.4-6.tar.gz b/packrat/src/microbenchmark/microbenchmark_1.4-6.tar.gz
deleted file mode 100644
index 1a88f96ae..000000000
Binary files a/packrat/src/microbenchmark/microbenchmark_1.4-6.tar.gz and /dev/null differ
diff --git a/packrat/src/mime/mime_0.6.tar.gz b/packrat/src/mime/mime_0.6.tar.gz
deleted file mode 100644
index e90248952..000000000
Binary files a/packrat/src/mime/mime_0.6.tar.gz and /dev/null differ
diff --git a/packrat/src/modelr/modelr_0.1.4.tar.gz b/packrat/src/modelr/modelr_0.1.4.tar.gz
deleted file mode 100644
index e85d5a2a1..000000000
Binary files a/packrat/src/modelr/modelr_0.1.4.tar.gz and /dev/null differ
diff --git a/packrat/src/munsell/munsell_0.5.0.tar.gz b/packrat/src/munsell/munsell_0.5.0.tar.gz
deleted file mode 100644
index 335e0261e..000000000
Binary files a/packrat/src/munsell/munsell_0.5.0.tar.gz and /dev/null differ
diff --git a/packrat/src/nycflights13/nycflights13_1.0.0.tar.gz b/packrat/src/nycflights13/nycflights13_1.0.0.tar.gz
deleted file mode 100644
index 5dc6f8ab5..000000000
Binary files a/packrat/src/nycflights13/nycflights13_1.0.0.tar.gz and /dev/null differ
diff --git a/packrat/src/openssl/openssl_1.2.1.tar.gz b/packrat/src/openssl/openssl_1.2.1.tar.gz
deleted file mode 100644
index 7f890fa69..000000000
Binary files a/packrat/src/openssl/openssl_1.2.1.tar.gz and /dev/null differ
diff --git a/packrat/src/packrat/packrat_0.5.0.tar.gz b/packrat/src/packrat/packrat_0.5.0.tar.gz
deleted file mode 100644
index 6ab66615f..000000000
Binary files a/packrat/src/packrat/packrat_0.5.0.tar.gz and /dev/null differ
diff --git a/packrat/src/pillar/pillar_1.3.1.tar.gz b/packrat/src/pillar/pillar_1.3.1.tar.gz
deleted file mode 100644
index 18ee8cf22..000000000
Binary files a/packrat/src/pillar/pillar_1.3.1.tar.gz and /dev/null differ
diff --git a/packrat/src/pkgconfig/pkgconfig_2.0.2.tar.gz b/packrat/src/pkgconfig/pkgconfig_2.0.2.tar.gz
deleted file mode 100644
index 6bf0a8ca4..000000000
Binary files a/packrat/src/pkgconfig/pkgconfig_2.0.2.tar.gz and /dev/null differ
diff --git a/packrat/src/plogr/plogr_0.2.0.tar.gz b/packrat/src/plogr/plogr_0.2.0.tar.gz
deleted file mode 100644
index e3a645198..000000000
Binary files a/packrat/src/plogr/plogr_0.2.0.tar.gz and /dev/null differ
diff --git a/packrat/src/plyr/plyr_1.8.4.tar.gz b/packrat/src/plyr/plyr_1.8.4.tar.gz
deleted file mode 100644
index 42a77f865..000000000
Binary files a/packrat/src/plyr/plyr_1.8.4.tar.gz and /dev/null differ
diff --git a/packrat/src/png/png_0.1-7.tar.gz b/packrat/src/png/png_0.1-7.tar.gz
deleted file mode 100644
index b333e62db..000000000
Binary files a/packrat/src/png/png_0.1-7.tar.gz and /dev/null differ
diff --git a/packrat/src/processx/processx_3.2.1.tar.gz b/packrat/src/processx/processx_3.2.1.tar.gz
deleted file mode 100644
index fb547501f..000000000
Binary files a/packrat/src/processx/processx_3.2.1.tar.gz and /dev/null differ
diff --git a/packrat/src/promises/promises_1.0.1.tar.gz b/packrat/src/promises/promises_1.0.1.tar.gz
deleted file mode 100644
index c1eca5612..000000000
Binary files a/packrat/src/promises/promises_1.0.1.tar.gz and /dev/null differ
diff --git a/packrat/src/pryr/pryr_0.1.4.tar.gz b/packrat/src/pryr/pryr_0.1.4.tar.gz
deleted file mode 100644
index 391dbfb2f..000000000
Binary files a/packrat/src/pryr/pryr_0.1.4.tar.gz and /dev/null differ
diff --git a/packrat/src/ps/ps_1.3.0.tar.gz b/packrat/src/ps/ps_1.3.0.tar.gz
deleted file mode 100644
index d74b19bd2..000000000
Binary files a/packrat/src/ps/ps_1.3.0.tar.gz and /dev/null differ
diff --git a/packrat/src/purrr/purrr_0.2.5.tar.gz b/packrat/src/purrr/purrr_0.2.5.tar.gz
deleted file mode 100644
index a60527001..000000000
Binary files a/packrat/src/purrr/purrr_0.2.5.tar.gz and /dev/null differ
diff --git a/packrat/src/raster/raster_2.8-19.tar.gz b/packrat/src/raster/raster_2.8-19.tar.gz
deleted file mode 100644
index 7b8f513c0..000000000
Binary files a/packrat/src/raster/raster_2.8-19.tar.gz and /dev/null differ
diff --git a/packrat/src/readr/readr_1.3.1.tar.gz b/packrat/src/readr/readr_1.3.1.tar.gz
deleted file mode 100644
index 1ae1754ee..000000000
Binary files a/packrat/src/readr/readr_1.3.1.tar.gz and /dev/null differ
diff --git a/packrat/src/readxl/readxl_1.1.0.tar.gz b/packrat/src/readxl/readxl_1.1.0.tar.gz
deleted file mode 100644
index c33ee9375..000000000
Binary files a/packrat/src/readxl/readxl_1.1.0.tar.gz and /dev/null differ
diff --git a/packrat/src/rematch/rematch_1.0.1.tar.gz b/packrat/src/rematch/rematch_1.0.1.tar.gz
deleted file mode 100644
index a8d3b1dcd..000000000
Binary files a/packrat/src/rematch/rematch_1.0.1.tar.gz and /dev/null differ
diff --git a/packrat/src/reprex/reprex_0.2.1.tar.gz b/packrat/src/reprex/reprex_0.2.1.tar.gz
deleted file mode 100644
index 5bff60666..000000000
Binary files a/packrat/src/reprex/reprex_0.2.1.tar.gz and /dev/null differ
diff --git a/packrat/src/reshape2/reshape2_1.4.3.tar.gz b/packrat/src/reshape2/reshape2_1.4.3.tar.gz
deleted file mode 100644
index 73e46637e..000000000
Binary files a/packrat/src/reshape2/reshape2_1.4.3.tar.gz and /dev/null differ
diff --git a/packrat/src/rlang/rlang_0.3.1.tar.gz b/packrat/src/rlang/rlang_0.3.1.tar.gz
deleted file mode 100644
index 89a216062..000000000
Binary files a/packrat/src/rlang/rlang_0.3.1.tar.gz and /dev/null differ
diff --git a/packrat/src/rmarkdown/rmarkdown_1.11.tar.gz b/packrat/src/rmarkdown/rmarkdown_1.11.tar.gz
deleted file mode 100644
index dce05d0e0..000000000
Binary files a/packrat/src/rmarkdown/rmarkdown_1.11.tar.gz and /dev/null differ
diff --git a/packrat/src/rstudioapi/rstudioapi_0.9.0.tar.gz b/packrat/src/rstudioapi/rstudioapi_0.9.0.tar.gz
deleted file mode 100644
index 56d287667..000000000
Binary files a/packrat/src/rstudioapi/rstudioapi_0.9.0.tar.gz and /dev/null differ
diff --git a/packrat/src/rvest/rvest_0.3.2.tar.gz b/packrat/src/rvest/rvest_0.3.2.tar.gz
deleted file mode 100644
index bb6206d50..000000000
Binary files a/packrat/src/rvest/rvest_0.3.2.tar.gz and /dev/null differ
diff --git a/packrat/src/scales/scales_1.0.0.tar.gz b/packrat/src/scales/scales_1.0.0.tar.gz
deleted file mode 100644
index eabc84e22..000000000
Binary files a/packrat/src/scales/scales_1.0.0.tar.gz and /dev/null differ
diff --git a/packrat/src/selectr/selectr_0.4-1.tar.gz b/packrat/src/selectr/selectr_0.4-1.tar.gz
deleted file mode 100644
index 388fecde6..000000000
Binary files a/packrat/src/selectr/selectr_0.4-1.tar.gz and /dev/null differ
diff --git a/packrat/src/shiny/shiny_1.2.0.tar.gz b/packrat/src/shiny/shiny_1.2.0.tar.gz
deleted file mode 100644
index 8ff35eaaf..000000000
Binary files a/packrat/src/shiny/shiny_1.2.0.tar.gz and /dev/null differ
diff --git a/packrat/src/sourcetools/sourcetools_0.1.7.tar.gz b/packrat/src/sourcetools/sourcetools_0.1.7.tar.gz
deleted file mode 100644
index 389d19933..000000000
Binary files a/packrat/src/sourcetools/sourcetools_0.1.7.tar.gz and /dev/null differ
diff --git a/packrat/src/sp/sp_1.3-1.tar.gz b/packrat/src/sp/sp_1.3-1.tar.gz
deleted file mode 100644
index 4dd382608..000000000
Binary files a/packrat/src/sp/sp_1.3-1.tar.gz and /dev/null differ
diff --git a/packrat/src/stringi/stringi_1.3.1.tar.gz b/packrat/src/stringi/stringi_1.3.1.tar.gz
deleted file mode 100644
index 251be67c8..000000000
Binary files a/packrat/src/stringi/stringi_1.3.1.tar.gz and /dev/null differ
diff --git a/packrat/src/stringr/stringr_1.4.0.tar.gz b/packrat/src/stringr/stringr_1.4.0.tar.gz
deleted file mode 100644
index 0966c7a03..000000000
Binary files a/packrat/src/stringr/stringr_1.4.0.tar.gz and /dev/null differ
diff --git a/packrat/src/sys/sys_2.1.tar.gz b/packrat/src/sys/sys_2.1.tar.gz
deleted file mode 100644
index 608eab167..000000000
Binary files a/packrat/src/sys/sys_2.1.tar.gz and /dev/null differ
diff --git a/packrat/src/tibble/tibble_2.0.1.tar.gz b/packrat/src/tibble/tibble_2.0.1.tar.gz
deleted file mode 100644
index 65adca22e..000000000
Binary files a/packrat/src/tibble/tibble_2.0.1.tar.gz and /dev/null differ
diff --git a/packrat/src/tidyr/tidyr_0.8.2.tar.gz b/packrat/src/tidyr/tidyr_0.8.2.tar.gz
deleted file mode 100644
index 160b447b4..000000000
Binary files a/packrat/src/tidyr/tidyr_0.8.2.tar.gz and /dev/null differ
diff --git a/packrat/src/tidyselect/tidyselect_0.2.5.tar.gz b/packrat/src/tidyselect/tidyselect_0.2.5.tar.gz
deleted file mode 100644
index 2eab01a54..000000000
Binary files a/packrat/src/tidyselect/tidyselect_0.2.5.tar.gz and /dev/null differ
diff --git a/packrat/src/tidyverse/tidyverse_1.2.1.tar.gz b/packrat/src/tidyverse/tidyverse_1.2.1.tar.gz
deleted file mode 100644
index a332b7f3b..000000000
Binary files a/packrat/src/tidyverse/tidyverse_1.2.1.tar.gz and /dev/null differ
diff --git a/packrat/src/tinytex/tinytex_0.10.tar.gz b/packrat/src/tinytex/tinytex_0.10.tar.gz
deleted file mode 100644
index 282987265..000000000
Binary files a/packrat/src/tinytex/tinytex_0.10.tar.gz and /dev/null differ
diff --git a/packrat/src/utf8/utf8_1.1.4.tar.gz b/packrat/src/utf8/utf8_1.1.4.tar.gz
deleted file mode 100644
index 9f9449bd4..000000000
Binary files a/packrat/src/utf8/utf8_1.1.4.tar.gz and /dev/null differ
diff --git a/packrat/src/viridis/viridis_0.5.1.tar.gz b/packrat/src/viridis/viridis_0.5.1.tar.gz
deleted file mode 100644
index d8d24423a..000000000
Binary files a/packrat/src/viridis/viridis_0.5.1.tar.gz and /dev/null differ
diff --git a/packrat/src/viridisLite/viridisLite_0.3.0.tar.gz b/packrat/src/viridisLite/viridisLite_0.3.0.tar.gz
deleted file mode 100644
index e12d30e3b..000000000
Binary files a/packrat/src/viridisLite/viridisLite_0.3.0.tar.gz and /dev/null differ
diff --git a/packrat/src/whisker/whisker_0.3-2.tar.gz b/packrat/src/whisker/whisker_0.3-2.tar.gz
deleted file mode 100644
index 7e6576e9e..000000000
Binary files a/packrat/src/whisker/whisker_0.3-2.tar.gz and /dev/null differ
diff --git a/packrat/src/withr/withr_2.1.2.tar.gz b/packrat/src/withr/withr_2.1.2.tar.gz
deleted file mode 100644
index 5a839da1a..000000000
Binary files a/packrat/src/withr/withr_2.1.2.tar.gz and /dev/null differ
diff --git a/packrat/src/xfun/xfun_0.4.tar.gz b/packrat/src/xfun/xfun_0.4.tar.gz
deleted file mode 100644
index a3fd5b334..000000000
Binary files a/packrat/src/xfun/xfun_0.4.tar.gz and /dev/null differ
diff --git a/packrat/src/xml2/xml2_1.2.0.tar.gz b/packrat/src/xml2/xml2_1.2.0.tar.gz
deleted file mode 100644
index 76ed19124..000000000
Binary files a/packrat/src/xml2/xml2_1.2.0.tar.gz and /dev/null differ
diff --git a/packrat/src/xtable/xtable_1.8-3.tar.gz b/packrat/src/xtable/xtable_1.8-3.tar.gz
deleted file mode 100644
index 35eb53ab6..000000000
Binary files a/packrat/src/xtable/xtable_1.8-3.tar.gz and /dev/null differ
diff --git a/packrat/src/yaml/yaml_2.2.0.tar.gz b/packrat/src/yaml/yaml_2.2.0.tar.gz
deleted file mode 100644
index 90c778ea5..000000000
Binary files a/packrat/src/yaml/yaml_2.2.0.tar.gz and /dev/null differ
diff --git a/rmarkdown-workflow.Rmd b/rmarkdown-workflow.Rmd
index ef7ea3d1b..172756c84 100644
--- a/rmarkdown-workflow.Rmd
+++ b/rmarkdown-workflow.Rmd
@@ -1,9 +1,9 @@
# R Markdown workflow
# Flujo de trabajo en R Markdown
-Earlier, we discussed a basic workflow for capturing your R code where you work interactively in the _console_, then capture what works in the _script editor_. R Markdown brings together the console and the script editor, blurring the lines between interactive exploration and long-term code capture. You can rapidly iterate within a chunk, editing and re-executing with Cmd/Ctrl + Shift + Enter. When you're happy, you move on and start a new chunk.
+Earlier, we discussed a basic workflow for capturing your R code where you work interactively in the _console_, then capture what works in the _script editor_. R Markdown brings together the console and the script editor, blurring the lines between interactive exploration and long-term code capture. You can rapidly iterate within a chunk, editing and re-executing with Cmd/Ctrl + Shift + Enter. When you're happy, you move on and start a new chunk.
-Antes, discutimos un flujo de trabajo básico para capturar tu código de R cuando trabjas interactivamente en la _consola_, la cual captura lo que trabaja en el _editor de script_. R Markdown une la _consola_ y el _editor de script_, desdibujando los limites entre exploración interactiva y captura de código a largo plazo. Puedes iterar rápidamente dentro un bloque, editando y re-ejecutando con Cmd/Ctrl + Shift + Enter. Cuando estés conforme, sigue adelante y inicia un nuevo bloque.
+Antes, discutimos un flujo de trabajo básico para capturar tu código de R cuando trabjas interactivamente en la _consola_, la cual captura lo que trabaja en el _editor de script_. R Markdown une la _consola_ y el _editor de script_, desdibujando los limites entre exploración interactiva y captura de código a largo plazo. Puedes iterar rápidamente dentro un bloque, editando y re-ejecutando con Cmd/Ctrl + Shift + Enter. Cuando estés conforme, sigue adelante y inicia un nuevo bloque.
R Markdown is also important because it so tightly integrates prose and code. This makes it a great __analysis notebook__ because it lets you develop code and record your thoughts. An analysis notebook shares many of the same goals as a classic lab notebook in the physical sciences. It:
@@ -13,21 +13,21 @@ R Markdown es también importante ya que integra firmemente prosa y código. Est
memory is, if you don't record what you do, there will come a time when
you have forgotten important details. Write them down so you don't forget!
-* Registrar qué se hizo y por qué se hizo. Independientemente de cuan buena sea tu memoria, si no registras lo que haces, llegará un momento cuando hayas olvidado detalles importantes.
+* Registrar qué se hizo y por qué se hizo. Independientemente de cuan buena sea tu memoria, si no registras lo que haces, llegará un momento cuando hayas olvidado detalles importantes.
* Supports rigorous thinking. You are more likely to come up with a strong
analysis if you record your thoughts as you go, and continue to reflect
on them. This also saves you time when you eventually write up your
analysis to share with others.
-* Apoyar el pensamiento riguroso. Es mas probable que logres un análisis fuerte si registras tus pensamientos mientras avanzas, y continuas reflexionando sobre ellos. Esto también te ahorra tiempo cuando eventualmente escribes tu analisis para compartir con otros.
+* Apoyar el pensamiento riguroso. Es mas probable que logres un análisis fuerte si registras tus pensamientos mientras avanzas, y continuas reflexionando sobre ellos. Esto también te ahorra tiempo cuando eventualmente escribes tu analisis para compartir con otros.
* Helps others understand your work. It is rare to do data analysis by
yourself, and you'll often be working as part of a team. A lab notebook
helps you share not only what you've done, but why you did it with your
colleagues or lab mates.
-* Ayudar a que otros comprendan tu trabajo. Es raro hacer un analisis de datos por sí sola, dado que muy seguido trabajarás como parte de un equipo. Un *notebook* de laboratorio ayuda a que compartas no solo lo que has hecho, sino también por qué lo hiciste con tus colegas o compañeros de laboratorio.
+* Ayudar a que otros comprendan tu trabajo. Es raro hacer un analisis de datos por sí sola, dado que muy seguido trabajarás como parte de un equipo. Un *notebook* de laboratorio ayuda a que compartas no solo lo que has hecho, sino también por qué lo hiciste con tus colegas o compañeros de laboratorio.
Much of the good advice about using lab notebooks effectively can also be translated to analysis notebooks. I've drawn on my own experiences and Colin Purrington's advice on lab notebooks () to come up with the following tips:
@@ -37,46 +37,46 @@ Muchos de estos buenos consejos sobre el uso más efectivo de *notebooks* de lab
* Ensure each notebook has a descriptive title, an evocative filename, and a
first paragraph that briefly describes the aims of the analysis.
-* Asegúrate de que cada *notebook* tenga un titulo descriptivo, un nombre de archivo evocativo, y un primer parrafo que describa brevemente los objetivos del analisis.
+* Asegúrate de que cada *notebook* tenga un titulo descriptivo, un nombre de archivo evocativo, y un primer parrafo que describa brevemente los objetivos del analisis.
* Use the YAML header date field to record the date you started working on the
notebook:
-* Utiliza el campo para fecha del encabezado YAML para registrar la fecha en la que comienzas a trabajar en el *notebook*:
+* Utiliza el campo para fecha del encabezado YAML para registrar la fecha en la que comienzas a trabajar en el *notebook*:
```yaml
+ title: My title
date: 2016-08-23
```
Use ISO8601 YYYY-MM-DD format so that's there no ambiguity. Use it
even if you don't normally write dates that way!
- Utiliza el formato ISO8601 AAAA-MM-DD para que no haya ambiguidad. ¡Utilízalo incluso si no escribes normalmente fechas de ese modo!
-
-
+ Utiliza el formato ISO8601 AAAA-MM-DD para que no haya ambiguidad. ¡Utilízalo incluso si no escribes normalmente fechas de ese modo!
+
* If you spend a lot of time on an analysis idea and it turns out to be a
dead end, don't delete it! Write up a brief note about why it failed and
leave it in the notebook. That will help you avoid going down the same
dead end when you come back to the analysis in the future.
-* Si pasas mucho timepo en una idea de analísis y resulta ser un callejón sin salida, ¡no lo elimines! Escribe una nota breve sobre por qué falló y déjala en el *notebook* .Esto te ayudará a evitar ir por el mismo callejon sin salida cuando regreses a ese analisis en el futuro.
+* Si pasas mucho timepo en una idea de analísis y resulta ser un callejón sin salida, ¡no lo elimines! Escribe una nota breve sobre por qué falló y déjala en el *notebook* .Esto te ayudará a evitar ir por el mismo callejon sin salida cuando regreses a ese analisis en el futuro.
* Generally, you're better off doing data entry outside of R. But if you
do need to record a small snippet of data, clearly lay it out using
`tibble::tribble()`.
-* Generalmente, es mejor que hagas la entrada de datos fuera de R. Pero si necesitas registrar un pequeño bloque de datos, establécelo de modo claro usando `tibble::tribble()`.
+* Generalmente, es mejor que hagas la entrada de datos fuera de R. Pero si necesitas registrar un pequeño bloque de datos, establécelo de modo claro usando `tibble::tribble()`.
* If you discover an error in a data file, never modify it directly, but
instead write code to correct the value. Explain why you made the fix.
* Si descubres un error en un archivo de datos, nunca lo modifiques directamente,
- en su lugar escribe código para corregir el valor. Explica por qué lo corregiste.
+ en su lugar escribe código para corregir el valor. Explica por qué lo corregiste.
* Before you finish for the day, make sure you can knit the notebook
(if you're using caching, make sure to clear the caches). That will
let you fix any problems while the code is still fresh in your mind.
-* Antes de concluir por el día, asgurate de que puedes *knit* el *notebook* (si utilizas cacheo, asgurate de limpiar los caches). Esto te permitirá corregir cualquier problema mientras el código esta todavia fresco en tu mente.
+* Antes de concluir por el día, asgurate de que puedes *knit* el *notebook* (si utilizas cacheo, asgurate de limpiar los caches). Esto te permitirá corregir cualquier problema mientras el código esta todavia fresco en tu mente.
* If you want your code to be reproducible in the long-run (i.e. so you can
come back to run it next month or next year), you'll need to track the
@@ -88,11 +88,11 @@ Muchos de estos buenos consejos sobre el uso más efectivo de *notebooks* de lab
a chunk that runs `sessionInfo()` --- that won't let you easily recreate
your packages as they are today, but at least you'll know what they were.
-* Si quieres que tu código sea reproducible a largo plazo (esto quiere decir que puedas regresar a ejecutarlo el mes próximo o el año próximo), necesitarás registrar las versiones de los paquetes que tu código usa. Un enfoque riguroso es usar __packrat__, , el cual almacena paquetes en tu directorio de proyecto, or __checkpoint__, , el cual reinstala paquetes disponibles en una fecha determinada . Un truco rápido y sucio es incluir un bloque que ejecute `sessionInfo()` --- , esto no te permitirá recrear fácilmente tus paquetes tal y como estan hoy, pero por lo menos sabrás cuales eran.
+* Si quieres que tu código sea reproducible a largo plazo (esto quiere decir que puedas regresar a ejecutarlo el mes próximo o el año próximo), necesitarás registrar las versiones de los paquetes que tu código usa. Un enfoque riguroso es usar __packrat__, , el cual almacena paquetes en tu directorio de proyecto, or __checkpoint__, , el cual reinstala paquetes disponibles en una fecha determinada . Un truco rápido y sucio es incluir un bloque que ejecute `sessionInfo()` --- , esto no te permitirá recrear fácilmente tus paquetes tal y como estan hoy, pero por lo menos sabrás cuales eran.
* You are going to create many, many, many analysis notebooks over the course
of your career. How are you going to organise them so you can find them
again in the future? I recommend storing them in individual projects,
and coming up with a good naming scheme.
-* Crearás muchos, muchos, muchos *notebooks* de analisis a lo largo de tu carrera. ¿Cómo puedes organizarlos de modo tal que puedas encontrarlos otra vez en el futuro? Recomiendo almacenarlos en proyectos individuales, y tener un buen esquema de nombrado.
+* Crearás muchos, muchos, muchos *notebooks* de analisis a lo largo de tu carrera. ¿Cómo puedes organizarlos de modo tal que puedas encontrarlos otra vez en el futuro? Recomiendo almacenarlos en proyectos individuales, y tener un buen esquema de nombrado.
diff --git a/tibble.Rmd b/tibble.Rmd
index de08798c2..3f9d78366 100644
--- a/tibble.Rmd
+++ b/tibble.Rmd
@@ -15,7 +15,7 @@ En este capítulo exploraré el paquete __tibble__, parte de los paquetes princi
library(tidyverse)
```
-## Creando tibbles {#tibbles}
+## Creando tibbles
La mayoría de las funciones que usarás en este libro producen tibbles, ya que éstos son una de las características principales de tidyverse. La mayoría de los paquetes de R suelen usar data frames clásicos, así que quizás quieras convertir un data frame en un tibble. Esto lo puedes hacer con `as_tibble()`:
@@ -39,7 +39,7 @@ Un tibble puede usar nombres de columnas que no son nombres de variables válido
```{r}
tb <- tibble(
- `:)` = "sonrisa",
+ `:)` = "sonrisa",
` ` = "espacio",
`2000` = "número"
)
@@ -80,12 +80,12 @@ tibble(
)
```
-Los tibbles están diseñados para no inundar tu consola accidentalmente al mirar data frames muy grandes. Sin embargo, a veces es necesario un output mayor que el que se obtiene por default. Existen algunas opciones que pueden ayudar.
+Los tibbles están diseñados para no inundar tu consola accidentalmente al mirar data frames muy grandes. Sin embargo, a veces es necesario un output mayor que el que se obtiene por default. Existen algunas opciones que pueden ayudar.
Primero, puedes usar `print()` en el data frame y controlar el número de filas (`n`) y el ancho (`width`) mostrado. Por otro lado, `width = Inf` muestra todas las columnas:
```{r, eval = FALSE}
-vuelos %>%
+vuelos %>%
print(n = 10, width = Inf)
```
@@ -100,7 +100,7 @@ Puedes ver una lista completa de opciones en la ayuda del paquete con `package?t
La opción final es usar el visualizador de datos de RStudio para obtener una versión interactiva del data frame completo. Esto también es útil luego de realizar una larga cadena de manipulaciones.
```{r, eval = FALSE}
-vuelos %>%
+vuelos %>%
View()
```
@@ -118,7 +118,7 @@ df <- tibble(
df$x
df[["x"]]
-# Extraer indicando la posición
+# Extraer indicando la posición
df[[1]]
```
@@ -147,7 +147,7 @@ La principal razón de que algunas funciones previas no funcionen con tibbles es
1. ¿Cómo puedes saber si un objeto es un tibble? (Sugerencia: imprime `mtautos` en consola, que es un data frame clásico).
1. Compara y contrasta las siguientes operaciones aplicadas a un `data.frame` y a un tibble equivalente. ¿Qué es diferente? ¿Por qué podría causarte problemas el comportamiento por defecto del data frame?
-
+
```{r, eval = FALSE}
df <- data.frame(abc = 1, xyz = "a")
df$x
@@ -160,13 +160,13 @@ df[, c("abc", "xyz")]
1. Practica referenciar nombres no sintácticos en el siguiente data frame:
1. Extrayendo la variable llamada `1`.
-
+
1. Generando un gráfico de dispersión de `1` vs `2`.
-
+
1. Creando una nueva columna llamada `3` que sea el resultado de la división de `2` por `1`.
1. Renombrando las columnas como `uno`, `dos` y `tres`.
-
+
```{r}
molesto <- tibble(
`1` = 1:10,
diff --git a/tidy.Rmd b/tidy.Rmd
index 47e27bcbc..ba03a5c25 100644
--- a/tidy.Rmd
+++ b/tidy.Rmd
@@ -2,15 +2,15 @@
## Introducción
-> "Todas las familias felices se parecen unas a otras, pero cada familia infeliz lo es a su manera." --– Leo Tolstoy
+> "Todas las familias felices se parecen unas a otras, pero cada familia infeliz lo es a su manera." --– León Tolstoy
> "Todos los datos ordenados se parecen unos a otros, pero cada dato desordenado lo es a su manera" --- Hadley Wickham
En este capítulo aprenderás una metodología consistente para organizar datos en R, a esta metodología le llamaremos __tidy data__ (datos ordenados). Llevar tus datos a este formato requiere algo de trabajo previo, sin embargo dicho trabajo tiene retorno positivo en el largo plazo. Una vez que tengas tus datos ordenados y las herramientas para ordenar datos que provee el tidyverse, vas a gastar mucho menos tiempo pasando de una forma de representar datos a otra, permietiéndote destinar más tiempo a las preguntas analíticas.
-Este capítulo te dará una introducción práctica a tidy data y las herramientas que provee el paquete __tidyr__. Si desear saber más acerca de la teoría subyacente, puede que te guste el artículo *Tidy Data* publicado en la revista Journal of Statistical Software, .
+Este capítulo te dará una introducción práctica a datos ordenados (o *tidy data* en inglés) y las herramientas que provee el paquete __tidyr__. Si desear saber más acerca de la teoría subyacente, puede que te guste el artículo *Tidy Data* publicado en la revista Journal of Statistical Software, .
-### Prerequisitos
+### Prerrequisitos
En este capítulo nos enfocaremos en tidyr, un paquete que provee un conjunto de herramientas que te ayudarán a ordenar datos desordenados. tidyr es parte del núcleo del tidyverse.
@@ -21,21 +21,21 @@ library(datos)
## Datos ordenados
-Puedes representar la misma información de múltiples formas. El ejemplo a continuación muestra los mismos datos ordenados de cuatro manera distintas. Cada dataset muestra los mismos valores de cuatro variables *pais*, *anio*, *poblacion* y *casos*, pero cada dataset organiza los valores de forma distinta.
+Puedes representar la misma información de múltiples formas. El ejemplo a continuación muestra los mismos datos ordenados de cuatro manera distintas. Cada dataset muestra los mismos valores de cuatro variables *pais*, *anio*, *poblacion* y *casos*, pero cada conjunto de datos organiza los valores de forma distinta.
```{r}
tabla1
tabla2
tabla3
-# Spread across two tibbles
+# Dividido en dos tibbles
tabla4a # casos
tabla4b # poblacion
```
-Todo lo anterior representa los mismos datos subyacentes, pero no es igualmente fácil de usar. Un dataset, el dataset ordenado, es mucho más fácil de trabajar en el tidyverse.
+Las anteriores son representaciones de los mismos datos subyacentes, pero no todas son igualmente fáciles de usar. Un tipo de conjunto de datos, el conjunto de datos ordenado, será mucho más fácil de trabajar en el tidyverse.
-Existen tres reglas interrelacionadas que hacen que un dataset sea ordenado:
+Existen tres reglas interrelacionadas que hacen que un conjunto de datos sea ordenado:
1. Cada variable tiene su propia columna.
1. Cada observación tiene su propia fila.
@@ -43,22 +43,22 @@ Existen tres reglas interrelacionadas que hacen que un dataset sea ordenado:
La figura \@ref(fig:tidy-structure) muestra estas reglas visualmente.
-```{r tidy-structure, echo = FALSE, out.width = "100%", fig.cap = "Following three rules makes a dataset tidy: variables are in columns, observations are in rows, and values are in cells."}
-knitr::include_graphics("images/tidy-1.svg")
+```{r tidy-structure, echo = FALSE, out.width = "100%", fig.cap = "Reglas que hacen que un conjunto de datos sea ordenado: las variables están en columnas, las observaciones en filas, y los valores en celdas."}
+knitr::include_graphics("diagrams_w_text_as_path/es/tidy-1.svg")
```
Estas reglas están interrelacionadas ya que es imposible cumplir dos de las tres.
Esta interrelación lleva a un conjunto práctico de instrucciones mucho más simple:
-1. Coloca cada dataset en un tibble.
+1. Coloca cada conjunto de datos en un tibble.
1. Coloca cada variable en una columna.
En este ejemplo, solo `tabla1` está ordenado. Es la única representación en que cada columna es una variable.
-¿Por qué asegurarse de que los datos están ordenados? Existen dos principales ventajas:
+¿Por qué asegurarse de que los datos estén ordenados? Existen dos principales ventajas:
-1. Existe una ventaja general de elegir una forma consistente de almacenar datos. Si tienes una estructura de datos consistente, es más fácil aprender las herramientas que sirven con aquello ya que presenta una uniformidad subyacente.
-1. Existe una ventaja específica al situar las variables en las columnas ya que permite que la naturaleza vectorizada de R brille. Como habrás aprendido en [mutate](#mutate-funs) y [summary functions](#summary-funs), muchas de las funciones que vienen con R trabajan con vectores de valores. Esto hace que transformar datos ordenados sea casi natural.
+1. Existe una ventaja general de elegir una forma consistente de almacenar datos. Si tienes una estructura de datos consistente, es más fácil aprender las herramientas que funcionan con ella ya que tienen una uniformidad subyacente.
+1. Existe una ventaja específica al situar las variables en las columnas ya que permite que la naturaleza vectorizada de R brille. Como habrás aprendido en [mutate](#mutate-funs) y [summary](#summary-funs), muchas de las funciones que vienen con R trabajan con vectores de valores. Esto hace que transformar datos ordenados sea casi natural.
dplyr, ggplot2 y el resto de los paquetes del tidyverse están diseñados para trabajar con datos ordenados. Aquí hay algunos ejemplos de cómo se podría trabajar con `tabla1`.
@@ -67,7 +67,7 @@ dplyr, ggplot2 y el resto de los paquetes del tidyverse están diseñados para t
tabla1 %>%
mutate(tasa = casos / poblacion * 10000)
-# Compute casos per anio
+# Calcular casos por anio
tabla1 %>%
count(anio, wt = casos)
@@ -80,9 +80,9 @@ ggplot(tabla1, aes(anio, casos)) +
### Ejercicios
-1. Usando prosa, describe como las variables y observaciones se organizan en las tablas de ejemplo.
+1. Usando prosa, describe como las variables y observaciones se organizan en las tablas de ejemplo.
-1. Calcula la `tasa` en las tablas `tabla2` y `tabla4a` + `tabla4b`.
+1. Calcula la `tasa` para las tablas `tabla2` y `tabla4a` + `tabla4b`.
Necesitarás las siguientes operaciones:
1. Extrae el número de casos de tuberculosis por país y año.
@@ -92,13 +92,13 @@ ggplot(tabla1, aes(anio, casos)) +
¿Cuál representación es más fácil de trabajar? ¿Cuál es la más difícil? ¿Por qué?
-1. Recrea el gráfico que muestra el cambio en el número de casos usando la `tabla2` en lugar de la `tabla1`. ¿Qué debes hacer en primera lugar?
+1. Recrea el gráfico que muestra el cambio en el número de casos usando la `tabla2` en lugar de la `tabla1`. ¿Qué debes hacer en primer lugar?
-## Gather y Spread
+## Reunir y Esparcir
-Los principios de tidy data parecen tan obvios que te preguntarás si acaso vas a encontrar un dataset que no está ordenado. Desafortunadamente, sin embargo, gran parte de los datos que vas a encontrar están desordenados. Existen dos principales razones para esto:
+Los principios de los datos ordenados parecen tan obvios que te preguntarás si acaso vas a encontrar un dataset que no esté ordenado. Desafortunadamente, gran parte de los datos que vas a encontrar están desordenados. Existen dos principales razones para esto:
-1. La mayoría de las personas no están familirizadas con los principios de datos ordenados y es difícil derivarlos por cuenta propia a menos que pases _mucho_ tiempo trabajando con datos.
+1. La mayoría de las personas no están familiarizadas con los principios de datos ordenados y es difícil derivarlos por cuenta propia a menos que pases _mucho_ tiempo trabajando con datos.
2. Los datos a menudo están organizados para facilitar tareas distintas del análisis. Por ejemplo, los datos se organizan para que su registro sea lo más sencillo posible.
@@ -118,7 +118,7 @@ Un problema común se tiene cuando en un dataset los nombres de las columnas no
tabla4a
```
-Para ordenar un dataset como este necesitamos contraer (__gather__) tales columnas en un nuevo par de variables. Para describir dicha operación necesitamos tres parámetros:
+Para ordenar un dataset como este necesitamos reunir (__gather__) tales columnas en un nuevo par de variables. Para describir dicha operación necesitamos tres parámetros:
* El conjunto de columnas que representan valores y no variables. En este ejemplo son las columnas `1999` y `2000`.
@@ -133,10 +133,10 @@ tabla4a %>%
gather(`1999`, `2000`, key = "anio", value = "casos")
```
-Las columnas a contraer quedan seleccionadas siguiendo el estilo de notación de `dplyr::select()`. En este caso hay dos columnas, por lo que las listamos individualmente. Nota que "1999" y "2000" son nombres no-sintáxicos (debido a que no comienzan con una letra) por lo que los escribimos con __backtick__. Para refrescar tu memoria respecto de la selección de columnas, consulta [select](#select).
+Las columnas a reunir quedan seleccionadas siguiendo el estilo de notación de `dplyr::select()`. En este caso hay dos columnas, por lo que las listamos individualmente. Nota que "1999" y "2000" son nombres no-sintáxicos (debido a que no comienzan con una letra) por lo que los rodeamos con acentos graves (o _backticks_, en inglés). Para refrescar tu memoria respecto de la selección de columnas, consulta [select](#select).
-```{r tidy-gather, echo = FALSE, out.width = "100%", fig.cap = "Gathering `tabla4` into a tidy form."}
-knitr::include_graphics("images/tidy-9.svg")
+```{r tidy-gather, echo = FALSE, out.width = "100%", fig.cap = "Reuniendo `tabla4` a un formato ordenado."}
+knitr::include_graphics("diagrams_w_text_as_path/es/tidy-9.svg")
```
En el resultado final, las columnas reunidas se eliminan y obtenemos la nuevas variables `key` y `value`. De otro modo, la relacién entre las variables originales se mantiene. Visualmente, esto se observa en la Figura \@ref(fig:tidy-gather). Podemos usar `gather()` para ordenar `tabla4b` de modo similar. La única diferencia es la variable almacenada en los valores de las celdas:
@@ -160,9 +160,7 @@ left_join(tidy4a, tidy4b)
### Spread
-Extender (__spread__) es lo opuesto de __gather__. Lo usas cuando una observación aparece en múltiples filas. Por ejemplo, toma la tabla `tabla2`: una observación
-
-You use it when an observation is scattered across multiple rows. For example, take `tabla2`: una observación es un país en un año, pero cada observación se reparte entre dos filas.
+Extender (__spread__) es lo opuesto de __gather__. Lo usas cuando una observación aparece en múltiples filas. Por ejemplo, toma la tabla `tabla2`: una observación es un país en un año, pero cada observación aparece en dos filas.
```{r}
tabla2
@@ -182,8 +180,8 @@ tabla2 %>%
spread(key = tipo, value = cuenta)
```
-```{r tidy-spread, echo = FALSE, out.width = "100%", fig.cap = "Spreading `tabla2` makes it tidy"}
-knitr::include_graphics("images/tidy-8.svg")
+```{r tidy-spread, echo = FALSE, out.width = "100%", fig.cap = "Esparcir la `tabla2` la vuelve ordenada"}
+knitr::include_graphics("diagrams_w_text_as_path/es/tidy-8.svg")
```
Como te habrás dado cuenta a partir de los argumentos comunes `key` y `value`, `gather()` y `spread()` son complementarios. `gather()` genera tablas estrechas y largas, `spread()` genera tablas anchas y cortas.
@@ -204,9 +202,9 @@ Como te habrás dado cuenta a partir de los argumentos comunes `key` y `value`,
gather("anio", "retorno", `2015`:`2016`)
```
- (Hint: observa los tipos de variables y piensa en los nombres de las columnas)
+ (Pista: observa los tipos de variables y piensa en los nombres de las columnas)
- Tanto `spread()` como `gather()` tienen el argumento `convert` (convertir). ¿Qué hace dich argumento?
+ Tanto `spread()` como `gather()` tienen el argumento `convert` (convertir). ¿Qué hace dicho argumento?
1. ¿Por qué falla el siguiente código?
@@ -221,11 +219,11 @@ tabla4a %>%
personas <- tribble(
~ nombre, ~ llave, ~ valor,
#-----------------|--------|------
- "Phillip Woods", "age", 45,
- "Phillip Woods", "height", 186,
- "Phillip Woods", "age", 50,
- "Jessica Cordero", "age", 37,
- "Jessica Cordero", "height", 156
+ "Phillip Woods", "edad", 45,
+ "Phillip Woods", "estatura", 186,
+ "Phillip Woods", "edad", 50,
+ "Jessica Cordero", "edad", 37,
+ "Jessica Cordero", "estatura", 156
)
```
@@ -234,35 +232,35 @@ personas <- tribble(
```{r}
embarazo <- tribble(
~ embarazo, ~ hombre, ~ mujer,
- "yes", NA, 10,
+ "si", NA, 10,
"no", 20, 12
)
```
## Separar y unir
-Hasta ahora has aprendido a ordenar las tablas `tabla2` y `tabla4`, pero no la `tabla3` que tiene un problema diferente: contiene una columna (`tasa`) la cual contiene dos variables (`casos` y `poblacion`). Para solucionar este problema, necesitamos la función `separate()` (separar), También aprenderás acerca del complemento de `separate()`: `unite()` (unir), la cual se usa en los casos en que una única variable se reparte en varias columnas.
+Hasta ahora has aprendido a ordenar las tablas `tabla2` y `tabla4`, pero no la `tabla3` que tiene un problema diferente: contiene una columna (`tasa`) la cual contiene dos variables (`casos` y `poblacion`). Para solucionar este problema, necesitamos la función `separate()` (separar). También aprenderás acerca del complemento de `separate()`: `unite()` (unir), que se usa cuando una única variable se reparte en varias columnas.
### Separar
-`separate()`divide una columna en varias columnas, dividiendo de acuerdo a la posición de un caracter separador. Tomando la `tabla3`:
+`separate()` divide una columna en varias columnas, dividiendo de acuerdo a la posición de un carácter separador. Tomando la `tabla3`:
```{r}
tabla3
```
-La columna `tasa` contiene las variables `casos` y `poblacion`,necesitamos dividir esto en dos variables. `separate()` toma el nombre de la columna a separar y el nombre de las columnas a donde irá el resultado, tal como se muestra en la Figura \@ref(fig:tidy-separate) y el código a continuación.
+La columna `tasa` contiene las variables `casos` y `poblacion`, necesitamos dividir esto en dos variables. `separate()` toma el nombre de la columna a separar y el nombre de las columnas a donde irá el resultado, tal como se muestra en la Figura \@ref(fig:tidy-separate) y el código a continuación.
```{r}
tabla3 %>%
separate(tasa, into = c("casos", "poblacion"))
```
-```{r tidy-separate, echo = FALSE, out.width = "75%", fig.cap = "Separating `tabla3` makes it tidy"}
-knitr::include_graphics("images/tidy-17.svg")
+```{r tidy-separate, echo = FALSE, out.width = "75%", fig.cap = "Separar la `tabla3` la vuelve ordenada"}
+knitr::include_graphics("diagrams_w_text_as_path/es/tidy-17.svg")
```
-Por defecto, `separate()` dividirá una columna donde aparezca un caracter no no alfanumérico (i.e. un caracter que no es un número o letra). Por ejemplo, en el siguiente código, `separate()` divide los valores de `tasa` donde aparece el caracter __slash__. Si deseas usar un caracter específico para separar una columna, puedes especificarlo en el argumento `sep` de `separate()`. Por ejemplo, lo anterior se puede re-escribir del siguiente modo:
+Por defecto, `separate()` dividirá una columna donde aparezca un carácter no alfanumérico (i.e. un carácter que no es un número o letra). Por ejemplo, en el siguiente código, `separate()` divide los valores de `tasa` donde aparece la _slash_. Si deseas usar un carácter específico para separar una columna, puedes especificarlo en el argumento `sep` de `separate()`. Por ejemplo, lo anterior se puede re-escribir del siguiente modo:
```{r eval = FALSE}
tabla3 %>%
@@ -271,7 +269,7 @@ tabla3 %>%
(Formalmente, `sep` es una expresión regular y aprenderás más sobre esto en [strings].)
-Mira atentamente los tipos de columna: notarás que `casos` y `poblacion` son columnas de tipo caracter. Este es el comportamiento por defecto en `separate()`: preserva el tipo de columna. Aquí, sin embargo, no es muy útil ya que se trata de números. Podemos pedir `separate()` a separate que intente convertir a un tipo más adecuado usando `convert = TRUE`:
+Mira atentamente los tipos de columna: notarás que `casos` y `poblacion` son columnas de tipo carácter. Este es el comportamiento por defecto en `separate()`: preserva el tipo de columna. Aquí, sin embargo, no es muy útil ya que se trata de números. Podemos pedir a separate() que intente convertir a un tipo más adecuado usando `convert = TRUE`:
```{r}
tabla3 %>%
@@ -289,27 +287,27 @@ tabla3 %>%
### Unir
-`unite()` es el inverso de `separate()`: combina múltiples columnas en una única columna. Necesitarás esta función con mucha menos frecuencia que `separate()`, pero aún así es una buena herramienta a tener en el bolsillo trasero.
+`unite()` es el inverso de `separate()`: combina múltiples columnas en una única columna. Necesitarás esta función con mucha menos frecuencia que `separate()`, pero aún así es una buena herramienta para tener en el bolsillo trasero.
-```{r tidy-unite, echo = FALSE, out.width = "75%", fig.cap = "Uniting `tabla5` makes it tidy"}
-knitr::include_graphics("images/tidy-18.svg")
+```{r tidy-unite, echo = FALSE, out.width = "75%", fig.cap = "Unir la `tabla5` la vuelve ordenada"}
+knitr::include_graphics("diagrams_w_text_as_path/es/tidy-18.svg")
```
-Podemos usar `unite()` para unir las columnas *siglo* y *anio* creadas en el ejemplo anterior. Los datos están guardados en `tidyr::tabla5`. `unite()` toma un data frame, el nombre de la nueva variable a crear, y un conjunto de columnas a combinar, las que se especifican siguiendo el estilo de la función `dplyr::select()`:
+Podemos usar `unite()` para unir las columnas *siglo* y *anio* creadas en el ejemplo anterior. Los datos están guardados en `datos::tabla5`. `unite()` toma un data frame, el nombre de la nueva variable a crear, y un conjunto de columnas a combinar, las que se especifican siguiendo el estilo de la función `dplyr::select()`:
```{r}
tabla5 %>%
- unite(new, siglo, anio)
+ unite(nueva, siglo, anio)
```
En este caso también necesitamos el arguento `sep`. El separador por defecto es el guión bajo (`_`) entre los valores de las distintas columnas. Si no queremos una separación usamos `""`:
```{r}
tabla5 %>%
- unite(new, siglo, anio, sep = "")
+ unite(nueva, siglo, anio, sep = "")
```
-### Exercises
+### Ejercicios
1. ¿Qué hacen los argumentos `extra` y `fill` en `separate()`?
Experimenta con las diversas opciones a partir de los siguientes datasets de ejemplo.
@@ -328,9 +326,9 @@ tibble(x = c("a,b,c", "d,e", "f,g,i")) %>%
1. Compara y contrasta `separate()` y `extract()`. ¿Por qué existen tres variaciones de
separación (por posición, separador y grupos), pero solo una forma de unir?
-## Valores perdidos
+## Valores faltantes
-Cambiar la representación de un dataset conlleva el riesgo de generar valores perdidos. Sorprendentemente, un valor puede perderse de dos formas:
+Cambiar la representación de un dataset conlleva el riesgo de generar valores faltantes. Sorprendentemente, un valor puede perderse de dos formas:
* __Explícita__, i.e. aparece como `NA`.
* __Implícita__, i.e. simplemente no aparece en los datos.
@@ -338,50 +336,50 @@ Cambiar la representación de un dataset conlleva el riesgo de generar valores p
Ilustremos esta idea con un dataset muy sencillo:
```{r}
-stocks <- tibble(
+acciones <- tibble(
anio = c(2015, 2015, 2015, 2015, 2016, 2016, 2016),
- qtr = c(1, 2, 3, 4, 2, 3, 4),
- return = c(1.88, 0.59, 0.35, NA, 0.92, 0.17, 2.66)
+ trimestre = c(1, 2, 3, 4, 2, 3, 4),
+ retorno = c(1.88, 0.59, 0.35, NA, 0.92, 0.17, 2.66)
)
```
-Existen dos valores perdidos en este dataset:
+Existen dos valores faltantes en este dataset:
* El retorno del cuarto trimestre de 2015 que está explícitamente perdido, debido a que la celda donde el valor debiera estar contiene `NA`.
* El retorno del primer semestre de 2016 está implícitamente perdido, debido a que simplemente no aparece en el dataset.
-One way to think about the difference is with this Zen-like koan: An explicit missing value is the presence of an absence; an implicit missing value is the absence of a presence.
+Una forma de pensar respecto de esta diferencia es al estilo de un mantra Zen: Un valor perdido explícito es la presencia de una ausencia; un valor perdido implícito es la ausencia de una presencia.
-The way that a dataset is represented can make implicit values explicit. For example, we can make the implicit missing value explicit by putting anios in the columns:
+La forma en que se representa un dataset puede dejar explícitos los valores implícitos. Por ejemplo, podemos volver explícitos los valores faltantes implícitos al mover los años a las columnas:
```{r}
-stocks %>%
- spread(anio, return)
+acciones %>%
+ spread(anio, retorno)
```
-Because these explicit missing values may not be important in other representations of the data, you can set `na.rm = TRUE` in `gather()` to turn explicit missing values implicit:
+Debido a que estos valores faltantes explícitos pueden no ser tan importantes en otras representaciones de los datos, puedes especificar `na.rm = TRUE` en `gather()` para dejar explícitos los valores faltantes implícitos:
```{r}
-stocks %>%
- spread(anio, return) %>%
- gather(anio, return, `2015`:`2016`, na.rm = TRUE)
+acciones %>%
+ spread(anio, retorno) %>%
+ gather(anio, retorno, `2015`:`2016`, na.rm = TRUE)
```
-Another important tool for making missing values explicit in tidy data is `complete()`:
+Otra herramienta importante para hacer explícitos los valores faltantes en datos ordenados es `complete()`:
```{r}
-stocks %>%
- complete(anio, qtr)
+acciones %>%
+ complete(anio, trimestre)
```
-`complete()` takes a set of columns, and finds all unique combinations. It then ensures the original dataset contains all those values, filling in explicit `NA`s where necessary.
+`complete()` toma un conjunto de columnas y encuentra todas las combinaciones únicas. Luego se asegura de que el dataset original contiene todos los valores, completando con `NA`s donde sea necesario.
-There's one other important tool that you should know for working with missing values. Sometimes when a data source has primarily been used for data entry, missing values indicate that the previous value should be carried forward:
+Existe otra herramienta importante que deberías conocer al momento de trabajar con valores faltantes. En algunos casos en que la fuente de datos se ha usado principalmente para ingresar datos, los valores faltantes indican que el valor previo debe arrastrarse hacia adelante:
```{r}
-treatment <- tribble(
- ~ person, ~ treatment, ~ response,
+tratamiento <- tribble(
+ ~ sujeto, ~ tratamiento, ~ respuesta,
"Derrick Whitmore", 1, 7,
NA, 2, 10,
NA, 3, 9,
@@ -389,158 +387,146 @@ treatment <- tribble(
)
```
-You can fill in these missing values with `fill()`. It takes a set of columns where you want missing values to be replaced by the most recent non-missing value (sometimes called last observation carried forward).
+Puedes completar los valores faltantes usando `fill()`. Esta función toma un conjunto de columnas sobre las cuales los valores faltantes son reemplazados por el valor anterior más cercano que se haya reportado (también conocido como el método LOCF, del inglés *last observation carried forward*).
```{r}
-treatment %>%
- fill(person)
+tratamiento %>%
+ fill(sujeto)
```
-### Exercises
+### Ejercicios
-1. Compare and contrast the `fill` arguments to `spread()` and `complete()`.
+1. Compara y contrasta el argumento `fill` que se usa en `spread()` con `complete()`.
-1. What does the direction argument to `fill()` do?
+1. ¿Qué hace el argumento de dirección en `fill()`?
-## Case Study
+## Estudio de caso
-To finish off the chapter, let's pull together everything you've learned to tackle a realistic data tidying problem. The `tidyr::who` dataset contains tuberculosis (TB) casos broken down by anio, pais, age, gender, and diagnosis method. The data comes from the *2014 World Health Organization Global Tuberculosis Report*, available at .
+Para finalizar el capítulo, combinemos todo lo que aprendiste para atacar un problema real de ordenamiento de datos. El dataset `datos::oms` contiene datos de tuberculosis (TB) detallados por año, país, edad, sexo y método de diagnóstico. Los datos provienen del *Informe de Tuberculosis de la Organización Mundial de la Salud 2014*, disponible en .
-There's a wealth of epidemiological information in this dataset, but it's challenging to work with the data in the form that it's provided:
+Existe abundante información epidemiológica en este dataset, pero es complicado trabajar con estos datos tal como son entregados:
```{r}
-who
+oms
```
-This is a very typical real-life example dataset. It contains redundant columns, odd variable codes, and many missing values. In short, `who` is messy, and we'll need multiple steps to tidy it. Like dplyr, tidyr is designed so that each function does one thing well. That means in real-life situations you'll usually need to string together multiple verbs into a pipeline.
+Este es un ejemplo muy típico de un dataset de la vida real. Contiene columnas redundantes, códigos extraños de variables y muchos valores faltantes. En breve, `oms` está desordenado y necesitamos varios pasos para ordenarlo. Al igual que dplyr, tidyr está diseñado de modo tal que cada función hace bien una cosa. Esto significa que en una situación real deberás encadenar múltiples verbos.
-The best place to start is almost always to gather together the columns that are not variables. Let's have a look at what we've got:
+La mejor forma de comenzar es reunir las columnas que no representan variables. Miremos lo que hay:
-* It looks like `pais`, `iso2`, and `iso3` are three variables that
- redundantly specify the pais.
+* Pareciera ser que `pais`, `iso2` e `iso3` son variables redundantes que se refieren al país.
-* `anio` is clearly also a variable.
+* `anio` es claramente una variable.
-* We don't know what all the other columns are yet, but given the structure
- in the variable names (e.g. `new_sp_m014`, `new_ep_m014`, `new_ep_f014`)
- these are likely to be values, not variables.
+* No sabemos aún el significado de las otras columnas, pero dada la estructura de los nombres de las variables (e.g. `nuevos_fpp_h014`, `nuevos_ep_h014`, `nuevos_ep_m014`) parecieran ser valores y no variables.
-So we need to gather together all the columns from `new_sp_m014` to `newrel_f65`. We don't know what those values represent yet, so we'll give them the generic name `"key"`. We know the cells represent the count of casos, so we'll use the variable `casos`. There are a lot of missing values in the current representation, so for now we'll use `na.rm` just so we can focus on the values that are present.
+Necesitamos agrupar todas las columnas desde `nuevos_fpp_h014` hasta `recaidas_m65`. No sabemos aún que representa esto, por lo que le daremos el nombre genérico de `"llave"`. Sabemos que las celdas representan la cuenta de casos, por lo que usaremos la variable `casos`.
+
+Existen múltiples valores faltantes en la representación actual, por lo que de momento usaremos `na.rm` para centrarnos en los valores que están presentes.
```{r}
-who1 <- who %>%
- gather(new_sp_m014:newrel_f65, key = "key", value = "casos", na.rm = TRUE)
-who1
+oms1 <- oms %>%
+ gather(nuevos_fpp_h014:nuevosrecaida_m65, key = "llave", value = "casos", na.rm = TRUE)
+oms1
```
-We can get some hint of the structure of the values in the new `key` column by counting them:
+Podemos tener una noción de la estructura de los valores en la nueva columna `llave` si hacemos un conteo:
```{r}
-who1 %>%
- count(key)
+oms1 %>%
+ count(llave)
```
-You might be able to parse this out by yourself with a little thought and some experimentation, but luckily we have the data dictionary handy. It tells us:
+Puedes deducir lo siguiente por cuenta propia pensando y experimentando un poco, pero afortunadamente tenemos el diccionario de datos a mano. Este nos dice lo siguiente:
-1. The first three letters of each column denote whether the column
- contains new or old casos of TB. In this dataset, each column contains
- new casos.
+1. Lo que aparece antes del primer `_` en las columnas denota si la columna contiene casos nuevos o antiguos de
+ tuberculosis. En este dataset, cada columna contiene nuevos casos.
-1. The next two letters describe the tipo of TB:
+2. Lo que aparece luego de indicar si se refiere casos nuevos o antiguos es el tipo de tuberculosis:
- * `rel` stands for casos of relapse
- * `ep` stands for casos of extrapulmonary TB
- * `sn` stands for casos of pulmonary TB that could not be diagnosed by
- a pulmonary smear (smear negative)
- * `sp` stands for casos of pulmonary TB that could be diagnosed be
- a pulmonary smear (smear positive)
+ * `recaida` se refiere a casos reincidentes
+ * `ep` se refiere a tuberculosis extra pulmonar
+ * `fpn` se refiere a casos de tuberculosis pulmonar que no se pueden detectar mediante examen de frotis pulmonar (frotis pulmonar negativo)
+ * `fpp` se refiere a casos de tuberculosis pulmonar que se pueden detectar mediante examen de frotis pulmonar (frotis pulmonar positivo)
-3. The sixth letter gives the sex of TB patients. The dataset groups
- casos by males (`m`) and females (`f`).
+3. La letra que aparece después del último `_` se refiere al sexo de los pacientes. El conjunto de datos agrupa en hombres (`h`) y mujeres (`m`).
-4. The remaining numbers gives the age group. The dataset groups casos into
- seven age groups:
+4. Los números finales se refieren al grupo etareo que se ha organizado en siete categorías:
- * `014` = 0 -- 14 anios old
- * `1524` = 15 -- 24 anios old
- * `2534` = 25 -- 34 anios old
- * `3544` = 35 -- 44 anios old
- * `4554` = 45 -- 54 anios old
- * `5564` = 55 -- 64 anios old
- * `65` = 65 or older
+ * `014` = 0 -- 14 años de edad
+ * `1524` = 15 -- 24 años de edad
+ * `2534` = 25 -- 34 años de edad
+ * `3544` = 35 -- 44 años de edad
+ * `4554` = 45 -- 54 años de edad
+ * `5564` = 55 -- 64 años de edad
+ * `65` = 65 o más años de edad
-We need to make a minor fix to the format of the column names: unfortunately the names are slightly inconsistent because instead of `new_rel` we have `newrel` (it's hard to spot this here but if you don't fix it we'll get errors in subsequent steps). You'll learn about `str_replace()` in [strings], but the basic idea is pretty simple: replace the characters "newrel" with "new_rel". This makes all variable names consistent.
+Necesitamos hacer un pequeño cambio al formato de los nombres de las columnas: desafortunadamente lo nombres de las columnas son ligeramente inconsistentes debido a que en lugar de `nuevos_recaida` tenemos `nuevosrecaida` (es difícil darse cuenta de esto en esta parte, pero si no lo arreglas habrá errores en los pasos siguientes). Aprenderás sobre `str_replace()` en [strings], pero la idea básica es bastante simple: reemplazar los caracteres "nuevosrecaida" por "nuevos_recaida". Esto genera nombres de variables consistentes.
```{r}
-who2 <- who1 %>%
- mutate(key = stringr::str_replace(key, "newrel", "new_rel"))
-who2
+oms2 <- oms1 %>%
+ mutate(llave = stringr::str_replace(llave, "nuevosrecaida", "nuevos_recaida"))
+oms2
```
-We can separate the values in each code with two passes of `separate()`. The first pass will split the codes at each underscore.
+Podemos separar los valores en cada código aplicando `separate()` dos veces. La primera aplicación dividirá los códigos en cada `_`.
```{r}
-who3 <- who2 %>%
- separate(key, c("new", "tipo", "sexage"), sep = "_")
-who3
+oms3 <- oms2 %>%
+ separate(llave, c("nuevos", "tipo", "sexo_edad"), sep = "_")
+oms3
```
-Then we might as well drop the `new` column because it's constant in this dataset. While we're dropping columns, let's also drop `iso2` and `iso3` since they're redundant.
+A continuación podemos eliminar la columna `nuevos` ya que es constante en este dataset. Además eliminaremos `iso2` e `iso3` ya que son redundantes.
```{r}
-who3 %>%
- count(new)
-who4 <- who3 %>%
- select(-new, -iso2, -iso3)
+oms3 %>%
+ count(nuevos)
+oms4 <- oms3 %>%
+ select(-nuevos, -iso2, -iso3)
```
-Next we'll separate `sexage` into `sex` and `age` by splitting after the first character:
+Luego separamos `sexo_edad` en `sexo` y `edad` dividiendo luego del primer carácter:
```{r}
-who5 <- who4 %>%
- separate(sexage, c("sex", "age"), sep = 1)
-who5
+oms5 <- oms4 %>%
+ separate(sexo_edad, c("sexo", "edad"), sep = 1)
+oms5
```
-The `who` dataset is now tidy!
+¡Ahora el dataset `oms` está ordenado!
-I've shown you the code a piece at a time, assigning each interim result to a new variable. This typically isn't how you'd work interactively. Instead, you'd gradually build up a complex pipe:
+Hemos mostrado el código parte por parte, asignando los resultados intermedios a nuevas variables. Esta no es la forma típica de trabajo. En cambio, lo que se hace es formar incrementalmente un encadenamiento complejo:
```{r, results = "hide"}
-who %>%
- gather(key, value, new_sp_m014:newrel_f65, na.rm = TRUE) %>%
- mutate(key = stringr::str_replace(key, "newrel", "new_rel")) %>%
- separate(key, c("new", "var", "sexage")) %>%
- select(-new, -iso2, -iso3) %>%
- separate(sexage, c("sex", "age"), sep = 1)
+oms %>%
+ gather(llave, valor, nuevos_fpp_h014:nuevosrecaida_m65, na.rm = TRUE) %>%
+ mutate(llave = stringr::str_replace(llave, "nuevosrecaida", "nuevos_recaida")) %>%
+ separate(llave, c("nuevos", "tipo", "sexo_edad")) %>%
+ select(-nuevos, -iso2, -iso3) %>%
+ separate(sexo_edad, c("sexo", "edad"), sep = 1)
```
-### Exercises
+### Ejercicios
-1. In this case study I set `na.rm = TRUE` just to make it easier to
- check that we had the correct values. Is this reasonable? Think about
- how missing values are represented in this dataset. Are there implicit
- missing values? What's the difference between an `NA` and zero?
+1. En este caso de estudio fijamos `na.rm = TRUE` para simplificar la verificación de que tenemos los valores correctos. ¿Es esto razonable? Piensa en como los valores faltantes están representados en este dataset. ¿Existen valores faltantes implícitos? ¿Cuál es la diferencia entre `NA` y cero?
-1. What happens if you neglect the `mutate()` step?
- (`mutate(key = stringr::str_replace(key, "newrel", "new_rel"))`)
+1. ¿Qué ocurre si omites la aplicación de `mutate()`?
+ (`mutate(llave = stringr::str_replace(llave, "nuevosrecaida", "nuevos_recaida"))`)
-1. I claimed that `iso2` and `iso3` were redundant with `pais`.
- Confirm this claim.
+1. Afirmamos que `iso2` e `iso3` son redundantes respecto a `pais`. Confirma esta premisa.
-1. For each pais, anio, and sex compute the total number of casos of
- TB. Make an informative visualisation of the data.
+1. Para cada país, año y sexo calcula el total del número de casos de tuberculosis. Crea una visualización informativa de los datos.
-## Non-tidy data
+## Datos no ordenados
-Before we continue on to other topics, it's worth talking briefly about non-tidy data. Earlier in the chapter, I used the pejorative term "messy" to refer to non-tidy data. That's an oversimplification: there are lots of useful and well-founded data structures that are not tidy data. There are two main reasons to use other data structures:
+Antes de pasar a otros tópicos, es conveniente referirse brevemente a datos no ordenados. Anteriormente en el capítulo, usamos el término peyorativo "desordenados" para referirnos a datos no ordenados. Esto es una sobresimplificación: existen múltiples estructuras de datos debidamente fundamentadas que no corresponden a datos ordenados. Existen dos principales razones para usar otras estructuras de datos:
-* Alternative representations may have substantial performance or space
- advantages.
+* Las representaciones alternativas pueden traer ventajas importantes en términos de desempeño o tamaño.
-* Specialised fields have evolved their own conventions for storing data
- that may be quite different to the conventions of tidy data.
+* Algunos áreas especializadas han evolucionado y tienen sus propias convenciones para almacenar datos, las que pueden diferir respecto de las convenciones de datos ordenados.
-Either of these reasons means you'll need something other than a tibble (or data frame). If your data does fit naturally into a rectangular structure composed of observations and variables, I think tidy data should be your default choice. But there are good reasons to use other structures; tidy data is not the only way.
+Cada uno de estas razones significa que necesitarás algo distinto a un tibble (o data frame). Si tus datos naturalmente se ajustan a una estructura rectangular compuesta de observaciones y variables, pensamos que datos ordenados debería ser tu elección por defecto. Sin embargo, existen buenas razones para usar otras estructuras; datos ordenados no es la única forma.
-If you'd like to learn more about non-tidy data, I'd highly recommend this thoughtful blog post by Jeff Leek:
+Si quieres aprender más acerca de datos no ordenados, recomendamos fuertemente este artículo del blog de Jeff Leek:
+