4.5: Carga y Almacenamiento de Datos
- Page ID
- 151518
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)
( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\id}{\mathrm{id}}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\kernel}{\mathrm{null}\,}\)
\( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\)
\( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\)
\( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)
\( \newcommand{\vectorA}[1]{\vec{#1}} % arrow\)
\( \newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow\)
\( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vectorC}[1]{\textbf{#1}} \)
\( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)
\( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)
\( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)Hay varios tipos diferentes de archivos que probablemente sean relevantes para nosotros a la hora de hacer análisis de datos. Hay tres en particular que son especialmente importantes desde la perspectiva de este libro:
- Los archivos Workspace son aquellos con una extensión de archivo.Rdata. Este es el tipo de archivo estándar que R utiliza para almacenar datos y variables. Se llaman “archivos de espacio de trabajo” porque puedes usarlos para guardar todo tu espacio de trabajo.
- Los archivos de valores separados por comas (CSV) son aquellos con una extensión de archivo.csv. Estos son solo archivos de texto antiguos regulares, y se pueden abrir con casi cualquier software. Es bastante típico que las personas almacenen datos en archivos CSV, precisamente porque son muy simples.
- Los archivos de script son aquellos con una extensión de archivo.R. Estos no son archivos de datos en absoluto; más bien, se utilizan para guardar una colección de comandos que desea que R ejecute más tarde. Son sólo archivos de texto, pero no vamos a hacer uso de ellos hasta el Capítulo 8.
También hay varios otros tipos de archivos que R hace uso, 52 pero en realidad no son tan centrales para nuestros intereses. También hay varios otros tipos de archivos de datos que quizás desee importar a R. Por ejemplo, es posible que desee abrir hojas de cálculo de Microsoft Excel (archivos.xlsx), o archivos de datos que se han guardado en los formatos de archivo nativos para otro software de estadísticas, como SPSS, SAS, Minitab, Stata o Systat. Por último, es posible que tengas que manejar bases de datos. R se esfuerza por jugar muy bien con otro software, por lo que tiene herramientas que te permiten abrir y trabajar con cualquiera de estos y muchos otros. Discutiré algunas de estas otras posibilidades en otra parte de este libro (Sección 7.9), pero por ahora quiero centrarme principalmente en los dos tipos de archivos de datos que es más probable que necesite: archivos.Rdata y archivos.csv. En esta sección hablaré sobre cómo cargar un archivo de espacio de trabajo, cómo importar datos de un archivo CSV y cómo guardar tu espacio de trabajo en un archivo de espacio de trabajo. A lo largo de esta sección primero describiré los comandos R (a veces incómodos) que hacen todo el trabajo, y luego te mostraré la forma (mucho más fácil) de hacerlo usando Rstudio.
Cargar archivos de espacio de trabajo usando R
Cuando utilicé el comando list.files ()
para enumerar el contenido del directorio /Users/dan/RBook/data
(en la Sección 4.4.2), la salida hacía referencia a un archivo llamado Booksales.rdata. Digamos que quiero cargar los datos de este archivo en mi espacio de trabajo. La forma en que hago esto es con la función load ()
. Hay dos argumentos para esta función, pero el único que nos interesa es
archivo
. Esta debería ser una cadena de caracteres que especifique una ruta al archivo que necesita cargarse. Puede usar una ruta absoluta o una ruta relativa para hacerlo.
Usando la ruta absoluta del archivo, el comando se vería así:
load( file = "/Users/dan/Rbook/data/booksales.Rdata" )
pero esto es bastante largo. Dado que el directorio de trabajo (recuerde, cambiamos el directorio al final de la Sección 4.4.4) es /Users/dan/RBook/data
, podría usar una ruta de archivo relativa, así:
load( file = "../data/booksales.Rdata" )
Sin embargo, mi preferencia suele ser cambiar primero el directorio de trabajo, y luego cargar el archivo. Lo que se vería es esto:
setwd( "../data" ) # move to the data directory
load( "booksales.Rdata" ) # load the data
Si entonces tuviera que escribir who ()
vería que ahora hay varias variables nuevas en mi espacio de trabajo. A lo largo de este libro, siempre que me veas cargando un archivo, asumiré que el archivo está realmente almacenado en el directorio de trabajo, o que has cambiado el directorio de trabajo para que R esté apuntando al directorio que contiene el archivo. Obviamente, no necesitas escribir ese comando tú mismo: puedes usar el panel de archivos Rstudio para hacer el trabajo.
Cargar archivos de espacio de trabajo usando Rstudio
Bien, entonces, ¿cómo abrimos un archivo.Rdata usando el panel de archivos Rstudio? Es terriblemente simple. Primero, usa el panel de archivos para encontrar la carpeta que contiene el archivo que deseas cargar. Si observa la Figura 4.7, puede ver que hay varios archivos.Rdata listados. Digamos que quiero cargar el archivo BookSales.rdata
. Todo lo que tengo que hacer es hacer clic en el nombre del archivo. Rstudio abre un pequeño cuadro de diálogo pidiéndome que confirme que sí quiero cargar este archivo. Hago clic en sí. El siguiente comando luego aparece en la consola,
load("~/Rbook/data/booksales.Rdata")
y las nuevas variables aparecerán en el espacio de trabajo (las verás en el panel Entorno en Rstudio, o si escribes who ()
). Tan fácil que apenas garantiza tener su propia sección.
Un formato de datos bastante utilizado es el humilde archivo de “valores separados por comas”, también llamado archivo CSV, y generalmente con la extensión de archivo.csv. Los archivos CSV son simplemente archivos de texto anticuados, y lo que almacenan es básicamente solo una tabla de datos. Esto se ilustra en la Figura 4.8, que muestra un archivo llamado booksales.csv que he creado. Como puede ver, cada fila corresponde a una variable, y cada fila representa los datos de ventas del libro durante un mes. Sin embargo, la primera fila no contiene datos reales: tiene los nombres de las variables.
Si Rstudio no estuviera disponible para usted, la forma más fácil de abrir este archivo sería usando la función read.csv ()
. 53 Esta función es bastante flexible, y voy a hablar mucho más sobre sus capacidades en la Sección 7.9 para más detalles, pero por ahora solo hay dos argumentos a la función que voy a mencionar:
archivo
. Esta debería ser una cadena de caracteres que especifique una ruta al archivo que necesita cargarse. Puede usar una ruta absoluta o una ruta relativa para hacerlo.encabezado
. Este es un valor lógico que indica si la primera fila del archivo contiene o no nombres de variables. El valor predeterminado esVERDADERO
.
Por lo tanto, para importar el archivo CSV, el comando que necesito es:
books <- read.csv( file = "booksales.csv" )
Aquí hay dos puntos muy importantes a tener en cuenta. En primer lugar, observe que no intenté usar la función load ()
, porque esa función solo está destinada a ser utilizada para archivos.Rdata. Si intentas usar load ()
en otro tipo de datos, obtienes un error. En segundo lugar, observe que cuando importé el archivo CSV asigné el resultado a una variable, a la que imaginativamente llamé libros
. 54 archivo. Hay una razón para esto. La idea detrás de un archivo.Rdata
es que almacene todo un espacio de trabajo. Entonces, si tuvieras la capacidad de mirar dentro del archivo tú mismo verías que el archivo de datos realiza un seguimiento de todas las variables y sus nombres. Entonces cuando cargues ()
el archivo, R restaura todos esos nombres originales. Los archivos CSV se tratan de manera diferente: en lo que a R se refiere, el CSV solo almacena una variable, pero esa variable es una tabla grande. Entonces, cuando importas esa tabla al espacio de trabajo, R espera que le des un nombre.] Echemos un vistazo a lo que tenemos:
print( books )
## Month Days Sales Stock.Levels
## 1 January 31 0 high
## 2 February 28 100 high
## 3 March 31 200 low
## 4 April 30 50 out
## 5 May 31 0 out
## 6 June 30 0 high
## 7 July 31 0 high
## 8 August 31 0 high
## 9 September 30 0 high
## 10 October 31 0 high
## 11 November 30 0 high
## 12 December 31 0 high
Claramente, ha funcionado, pero el formato de esta salida es un poco desconocido. No hemos visto nada como esto antes. Lo que estás viendo es un marco de datos, que es un tipo de variable muy importante en R, y una que voy a discutir en la Sección 4.8. Por ahora, solo seamos felices de que hayamos importado los datos y que se vea bien.
Importar datos de archivos CSV usando Rstudio
Una vez más, es más fácil en Rstudio. En el panel de entorno en Rstudio deberías ver un botón llamado “Importar Dataset”. Da click en eso, y te dará un par de opciones: selecciona la opción “Desde archivo de texto...”, y abrirá un cuadro de diálogo muy familiar pidiéndote seleccionar un archivo: si estás en una Mac, se verá como la ventana de Finder habitual que usas para elegir un archivo; en Windows parece una ventana del Explorador. Un ejemplo de cómo se ve en una Mac se muestra en la Figura 4.9. Supongo que estás familiarizado con tu propia computadora, ¡así que no deberías tener problemas para encontrar el archivo CSV que quieres importar! Encuentra el que quieras, luego haz clic en el botón “Abrir”. Cuando hagas esto, verás una ventana que se parece a la de la Figura 4.10.
La ventana del conjunto de datos de importación es relativamente sencilla de entender.
En la esquina superior izquierda, es necesario escribir el nombre de la variable que R para crear. Por defecto, ese será el mismo que el nombre del archivo: nuestro archivo se llama booksales.csv
, por lo que Rstudio sugiere el nombre booksales
. Si estás contento con eso, déjalo en paz. Si no, escribe otra cosa. Inmediatamente debajo de esto hay algunas cosas que puede modificar para asegurarse de que los datos se importen correctamente:
- Rúbrica. ¿La primera fila del archivo contiene datos sin procesar o contiene encabezados para cada variable? El archivo
booksales.csv
tiene un encabezado en la parte superior, así que seleccioné “sí”. - Separador. ¿Qué carácter se utiliza para separar diferentes entradas? En la mayoría de los archivos CSV esto será una coma (después de todo, está “separada por comas”). Pero puedes cambiar esto si tu archivo es diferente.
- Decimal. ¿Qué carácter se utiliza para especificar el punto decimal? En los países de habla inglesa, esto es casi siempre un período (es decir,
.
). Eso no es universalmente cierto: muchos países europeos usan una coma. Así que puedes cambiar eso si es necesario. - Cotización. ¿Qué carácter se utiliza para denotar un bloque de texto? Eso suele ser una comilla doble. Es para el archivo
booksales.csv
, así que eso es lo que seleccioné.
Lo bueno de la ventana de Rstudio es que te muestra el archivo de datos sin procesar en la parte superior de la ventana, y te muestra una vista previa de los datos en la parte inferior. Si los datos en la parte inferior no se ven a la derecha, intente cambiar algunos de los ajustes en el lado izquierdo. Una vez que estés satisfecho, haz clic en “Importar”. Cuando lo hace, aparecen dos comandos en la consola R:
booksales <- read.csv("~/Rbook/data/booksales.csv")
View(booksales)
El primero de estos comandos es el que carga los datos. El segundo mostrará una bonita tabla mostrando los datos en Rstudio.
Guardar un archivo de espacio de trabajo mediante guardar
No es sorprendente que guardar datos sea muy similar a cargar datos. Aunque Rstudio proporciona una forma sencilla de guardar archivos (ver más abajo), vale la pena entender los comandos reales involucrados. Hay dos comandos que puedes usar para hacer esto, save ()
y save.image ()
. Si estás contento de guardar todas las variables de tu espacio de trabajo en el archivo de datos, entonces deberías usar save.image ()
. Y si estás contento de que R guarde el archivo en el directorio de trabajo actual, todo lo que tienes que hacer es esto:
save.image( file = "myfile.Rdata" )
Dado que file
es el primer argumento, puedes acortar esto para guardar.image (“MyFile.rData”)
; y si quieres guardar en un directorio diferente, entonces (como siempre) necesitas ser más explícito acerca de especificar la ruta al archivo, tal y como comentamos en la Sección 4.4. Supongamos, sin embargo, que tengo varias variables en mi espacio de trabajo, y solo quiero guardar algunas de ellas. Por ejemplo, podría tener esto como mi espacio de trabajo:
who()
## -- Name -- -- Class -- -- Size --
## data data.frame 3 x 2
## handy character 1
## junk numeric 1
Quiero guardar datos
y a mano
, pero no basura
. Pero no quiero eliminar basura
en este momento, porque quiero usarla para otra cosa más adelante. Aquí es donde es útil la función save ()
, ya que me permite indicar exactamente qué variables quiero guardar. Aquí hay una forma en la que puedo usar la función guardar
para resolver mi problema:
save(data, handy, file = "myfile.Rdata")
Es importante destacar que debe especificar el nombre del argumento del archivo
. La razón es que si no lo haces, R pensará que “MyFile.rData”
es en realidad una variable que quieres guardar, y recibirás un mensaje de error. Por último, debo mencionar una segunda forma de especificar qué variables debe guardar la función save ()
, que es usar el argumento list
. Lo haces así:
save.me <- c("data", "handy") # the variables to be saved
save( file = "booksales2.Rdata", list = save.me ) # the command to save them
Guardar un archivo de espacio de trabajo con Rstudio
Rstudio te permite guardar el espacio de trabajo con bastante facilidad. En el panel de entorno (Figuras 4.5 y 4.6) se puede ver el botón “guardar”. No hay texto, pero es el mismo icono que se usa en todas las computadoras en todas partes: es el que parece un disquete. Ya sabes, esas cosas que no se han usado en unos 20 años. Alternativamente, vaya al menú “Sesión” y haga clic en la opción “Guardar espacio de trabajo como...”. 55 Esto abrirá el cuadro de diálogo estándar de “guardar” para su sistema operativo (por ejemplo, en una Mac se verá un poco como el cuadro de diálogo de carga en la Figura 4.9). Escriba el nombre del archivo en el que desea guardarlo y todas las variables de su espacio de trabajo se guardarán en el disco. Verás un comando R como este
save.image("~/Desktop/Untitled.RData")
Bastante sencillo, de verdad.
Otras cosas que quizás quieras guardar
Hasta ahora, hemos hablado principalmente de cargar y guardar datos. Otras cosas que quizás quieras guardar incluyen:
- La salida. A veces es posible que también desee conservar una copia de todas sus interacciones con R, incluyendo todo lo que escribió y todo lo que R hizo en respuesta. Hay algunas funciones que puedes usar para obtener R para escribir su salida en un archivo en lugar de imprimir en pantalla (por ejemplo,
sink ()
), pero para ser honesto, si quieres guardar la salida R, lo más fácil de hacer es usar el mouse para seleccionar el texto relevante en la consola R, ve al menú “Editar” en Rstudio y seleccione “Copiar”. La salida se ha copiado ahora en el portapapeles. Ahora abre tu editor de texto favorito o software de procesamiento de textos, y pegarlo. Y ya terminaste. Sin embargo, esto solo guardará el contenido de la consola, no las parcelas que hayas dibujado (suponiendo que hayas dibujado algunas). Hablaremos de guardar imágenes más adelante. - Un guión. Si bien es posible —y a veces útil— guardar la salida R como método para guardar una copia de tus análisis estadísticos, otra opción que la gente usa mucho (especialmente cuando vas más allá de los simples análisis de “juguete”) es escribir guiones. Un script es un archivo de texto en el que escribes todos los comandos que quieres que R ejecute. Puedes escribir tu script usando el software que más te guste. En el análisis de datos del mundo real, escribir scripts es una habilidad clave, y a medida que se familiarice con R, probablemente encontrará que la mayor parte de lo que hace implica secuencias de comandos en lugar de escribir comandos en el símbolo R. Sin embargo, no necesitarás hacer mucho scripting inicialmente, así que lo dejaremos hasta el Capítulo 8.