Datos
Para el correcto uso de los datos y entender los procesos de trabajo que llevaremos a cabo con ellos de aquí en adelante, es necesario conocer ciertos conceptos básicos relacionados con su organización y como acceder a ellos desde un programa
Archivo
Un archivo es un conjunto contiguo de bytes destinados a almacenar datos. Estos datos se organizan en un formato específico y pueden ser tan simples como una secuencia de texto o tan complejos como el ejecutable de un programa. Los archivos se pueden almacenar en memoria secundaria (disco duro) y, por tanto, la información que guardamos allí perdura más allá del tiempo que el ordenador se encuentra encendido. Cuando necesitamos cargar los datos de un archivo en nuestro programa (por ejemplo en R) el sistema operativo del ordenador se encarga de la tarea de trasladar la información del disco duro a la memoria principal (memoria RAM).
Los archivos de la mayoría de sistemas modernos se componen de tres partes:
Cabecera: metadatos sobre el contenido del archivo (nombre de archivo, organización interna, tipos, etc.).
Datos: contenido del archivo.
Final del archivo (EOF): carácter especial que indica el final del archivo.
Path
Cuando queremos acceder a un archivo (o carpeta) de nuestro sistema operativo desde un programa es necesario indicar qué camino debemos seguir de la localización donde se encuentra el programa hasta llegar a la localización de dicho archivo (o carpeta). El camino o path del archivo se representa en nuestro programa con un string que suele ser un parámetro de la función que se encarga de abrir el archivo. El string que representa la localización de un archivo en nuestro ordenador se divide en tres partes principales:
Ruta de carpetas: la ubicación de la carpeta en el sistema de archivos. Las carpetas posteriores están separadas por una barra inclinada
/
. Para acceder a carpetas anteriores utilizaremos el símbolo...
.Nombre del archivo: el nombre del archivo. Como anécdota podemos comentar que Windows no permitía nombres iniciados con punto hasta su versión 10, puesto que era un nombre reservado para archivos del mismo sistema.
Extensión: el final del camino del archivo marcado con un punto
.
. La extensión nos sirve para indicar el tipo de archivo, en ningún caso condiciona su contenido, un archivo con extensión .txt puede tener información referente a una imagen.
Los paths pueden ser:
Absolutos: Respeto a la raíz del sistema. Lo que conocemos como C: (Windows) o / (UNIX).
Relativos: Respeto a la carpeta donde estamos situados.
/ ← raíz (C: en windows)
│
├── path/
│ │
│ ├── to/
│ │ ├── main.py
│ │ └── cats.txt
│ │
│ ├── main2.py
│ │
│ └── dogs.txt
│
└── animals.csv
Si nos encontramos en la carpeta to y queremos acceder al archivo cats.txt lo haremos con los siguientes strings:
path_relatiu = "cats.txt"
path_absolut = "/path/to/cats.txt"
Si nos encontramos en la carpeta path y queremos acceder al archivo cats.txt lo haremos con los siguientes strings:
path_relatiu = "to/cats.txt"
path_absolut = "/path/to/cats.txt"
Si nos encontramos en la carpeta to y queremos acceder al archivo dogs.txt lo haremos con los siguientes strings:
path_relatiu = "../dogs.txt"
path_absolut = "/path/dogs.txt"
Estableciendo el path en RStudio
El directorio o carpeta de trabajo es el lugar en nuestra computadora en el que se encuentran los archivos con los que estamos trabajando en ese momento en R. Este es el lugar donde R buscara archivos para importarlos y al que serán exportados, a menos que indiquemos un path diferente.
Podemos saber cuál es el directorio de trabajo actual con la función getwd
o en la pestaña Files de RStudio. Por otra parte también es posible modificarlo usando la función setwd
, dando como argumento el path del directorio que quieres usar. Otra manera de cambiar el directorio de trabajo usando RStudio mediante la opción de menú Session > Set Working Directory. Encontraremos 3 opciones:
To Source File Location: Establece el directorio de trabajo en la carpeta donde tenemos el archivo con el cual estamos trabajando actualmente.
To Files Pane Location: Establece el directorio de trabajo en la carpeta que vemos en el panel Files de RStudio.
Choose Directory: Si elegimos esta opción, se abrirá una ventana desde la cual podremos seleccionar la carpeta que deseemos.
Organización de la información
Los formatos de archivos son la manera en que la información está codificada para el almacenamiento en un medio informático. La información que podemos encontrar está organizada en diferentes formatos y para poderla procesar y almacenar es necesario conocer la existencia de estos diferentes formatos de datos y como podemos operar con ellos. Podemos clasificar estos formatos de datos en tres categorías: datos estructurados, semi-estructurados y no estructurados.
Datos no estructurados
Las fuentes de datos no estructurados generalmente son los archivos de texto u objetos binarios que no contienen etiquetas ni metadatos (por ejemplo CSV) para definir la organización de datos.
Documentos de texto
Los documentos de texto (normalmente con extensión .txt) están diseñados para facilitar su lectura por parte de un humano. Típicamente, no incluyen metadatos estructurales, lo que significa que los desarrolladores de software necesitan crear un programa de análisis que pueda interpretar cada documento tal como aparece. Al intercambiar archivos de texto plano entre sistemas operativos pueden aparecer algunos problemas. Por ejemplo: MS Windows, Mac OS X y otras variantes de Unix tienen su propia forma de decirle al ordenador que se ha llegado al final de la línea.
CSV (Comma Separated Values)
Los archivos CSV en los que los datos se encuentran separados por coma y saltos de línea, son compactos y, por tanto, adecuados para transferir grandes conjuntos de datos con la misma estructura.
Cada línea del archivo es un registro de datos. Cada registro consta de uno o más campos, separados por comas. El uso de la coma como separador de campo es el origen del nombre de este formato de archivo. Un archivo CSV generalmente almacena datos tabulares (números y texto) en texto sin formato, en cuyo caso cada línea tendrá la misma cantidad de campos. Nos podemos encontrar que bajo la extensión de archivo .csv no se usa la coma como delimitador, este hecho puede provocar problemas a la hora de intercambiar archivos de este tipo. Muchas aplicaciones que aceptan archivos con extensión .csv tienen opciones para seleccionar el carácter delimitador, a menudo se utiliza el símbolo punto y coma en lugar de la coma.
El formato es rudimentario, y esto implica que los datos son frecuentemente inservibles si no se tiene acceso a la documentación, ya que puede ser casi imposible saber el significado de las diferentes columnas. Por lo tanto, es importante que la documentación de los campos individuales sea precisa. Es esencial que la estructura del archivo sea respetada, la omisión de un único campo puede perturbar la lectura de todos los datos restantes del archivo.
Datos semi estructurados
Las fuentes de datos semi-estructurados, presentan cierta estructura, pero no están organizadas en un modelo racional, como una tabla o un grafo. Como resultado, cada registro de datos tiene asociada cierta información que incrementa el conocimiento que podemos obtener de ella y la dota de cierto esquema. JSON y XML son los ejemplos más populares. Las ventajas de este formato es que proporciona flexibilidad a la hora de expresar los datos, ya que cada registro se describe a sí mismo.
XML
XML (Extensible Markup Language) es un formato ampliamente utilizado para el intercambio de datos ya que ofrece una manera de organizar los datos de forma parcialmente estructurada. Un lenguaje de marcado (como es XML) consiste en un conjunto de símbolos que se pueden colocar en el texto de un documento para delimitar, etiquetar y relacionar sus diferentes partes. Las etiquetas XML identifican los datos y se utilizan para almacenar y organizarlos, estas etiquetas no están fijadas (como puede ocurrir con html) de ahí que se hable de un lenguaje extensible.
XML es un estándar público, fue desarrollado por una organización llamada World Wide Web Consortium (W3C) y está disponible como estándar abierto. Debido a la utilización de etiquetas de inicio y de final de información (entre ‘<’ y ‘>’) es un formato considerado pesado para la transferencia de información.
A continuación podemos observar un ejemplo de XML:
<note type = “card”>
<to>Harry/to>
<from>Hagrid</from>
<heading>Recordatorio</heading>
<body>¿Os apetece tomar el té conmigo esta tarde, a eso de las seis? </body>
</note>
JSON
JSON (JavaScript Object Notation) es un formato de archivo estándar y abierto que utiliza texto legible por humanos para transmitir conjuntos (u objetos) de datos que consisten en pares de clave-valor y arrays (o cualquier otro valor Serializable). Una de las ventajas que tiene JSON es que puede ser leído por cualquier lenguaje de programación. Por lo tanto, puede ser usado para el intercambio de información entre diferentes tecnologías.
Actualmente, es muy usado y en muchos casos sustituye XML como formato de intercambio de datos en la red debido a su ligereza, ya que al no tener marcas (<>) un fichero JSON con la misma estructura que un XML ocupa menos espacio en memoria.
Ejemplo de la información en formato JSON:
{
type: "card",
to_from: ["Harry", "Hagrid"]
head: "Recordatorio"
body: "¿Os apetece tomar el té conmigo esta tarde, a eso de las seis? "
}
Datos estructurados
Los datos estructurados tienen un alto nivel de organización que lo hace predecible, fácil de organizar y al que se puede acceder fácilmente. Los datos se introducen en campos específicos que contienen datos textuales o numéricos. Estos campos a menudo tienen definido un tamaño máximo. Además de la estructura sólida de información, los datos estructurados tienen unas reglas muy específicas sobre cómo acceder a ellos.
Un ejemplo de ello son las Bases de Datos relacionales y su lenguaje de manipulación SQL.