SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
Manejo de un marco de datos en R
Diego Torres
Estudiante de econom´ıa aplicada
COLEF
4 de julio de 2016
Resumen
Este trabajo tiene como objetivo explicar el manejo b´asico de un marco
de datos o data frame dentro del entorno R. A trav´es de ejemplos sim-
ples se pretende ense˜nar el manejo del objeto m´as com´un del lenguaje
R. Dado que, tener una base de datos sobre la cual actuar, es el primer
paso para cualquier an´alisis estad´ıstico y/o econom´etrico, se ofrece el
siguiente documento como referencia para los que se inician en el uso
de este programa estad´ıstico.
Palabras clave: Lenguaje R, data frame, LATEX, Sweave
Introducci´on
Este trabajo fue elaborado con R, utilizando la herramienta Sweave que per-
mite combinar codigo escrito en R con texto compilado en LATEX. El objetivo
es presentar un manejo simple del principal objeto utilizado en R: marco
de datos o data frame. Una vez realizadas estas primeras acciones se puede
avanzar en el an´alisis propio de los datos.
El trabajo est´a orientado para quienes se inician en el uso de R, utilizando
ejemplos muy sencillos se presenta y explica la manera de realizar tareas
sencillas, pero importantes para el an´alisis de datos.
La raz´on de escribir este trabajo se debe a los problemas que enfrent´e al
trabajar con la encuesta de ocupaci´on y empleo de M´exico, la cual ofrece una
1
gran cantidad de informaci´on en microdatos; son tantos datos que la encuesta
est´a dividida en dos partes y aunque hay herramientas m´as intuitivas para
trabajar con ´estos como Excel de Microsoft Office, ´este no puede cargar tanta
cantidad de informaci´on.
La estructura del informe se divide en tres apartados, en el primero se
aborda el tema de importaci´on de datos, posteriormente la manipulaci´on
inical de los mismos, en particular tareas como agregar o eliminar variables;
ordenar y filtrar variables; combinar marcos de datos. El tercer apartado trata
sobre la exportaci´on de un marco de datos, lo cual es ´util cuando se quiere
compartir la informaci´on con la que se trabajo o se quiere su portabilidad
para seguir trabajando en otra computadora. Tambi´en se ofrece una breve
conclusi´on sobre el trabajo.
1. Importar datos
Para tener un trabajo ordenado, recomiendo crear un proyecto y establecer
un directorio de trabajo para cada proyecto, lo anterior consiste en definir una
carpeta en la que se guardar´a toda la informaci´on de las sesiones. La creaci´on
de un nuevo proyecto se hace desde la barra de menus, dentro de la pesta˜na
file. Al hacerlo R pedir´a seleccionar un directorio de trabajo, se puede ele-
gir entre uno ya existente o nuevo, basta seguir las instrucciones para definirlo.
Uno vez hecho lo anterior, el siguiente paso es introducir los datos, para
ello se puede introducirlos a mano o importarlos desde una fuente externa,
veamos como hacerlo.
1.1. Introducir datos desde R
Los siguientes ejemplos muestran diferentes maneras de introducir los datos.
Ejemplo 1:
Se puede introducir cada vector o lista de manera individual y posteriormente
juntarlos dentro de un marco de datos.
> Precio<-c(20,21,22,24)
> Cantidad<-c(17000,16400,16000,14000)
2
> Exporta<-c(0,0,0,1)
> Empresa<-c("Hern´andez", "L´opes", "Torres", "Gonz´alez")
Se le ha indicado a R lo siguiente, la primera linea le informa que de-
be crear un vector llamado Precio, compuesto de cuatro valores num´ericos:
20, 21, 22 y 24; de manera similar para las siguientes dos l´ıneas, cambian-
do el nombre de la variable y sus valores, sin embargo, la cuarta l´ınea le
indica a R que cre´e una lista de caracteres, los argumentos est´an entre comillas.
Se puede utilizar la funci´on ls para conocer cu´antos y cu´ales objetos tene-
mos cargados en el entorno R, al utilizarlo se tiene lo siguiente:
> ls()
[1] "Cantidad" "Empresa" "Exporta" "Precio"
Ahora se requiere unir los objetos dentro de un marco de datos, se logra
usando la funci´on data.frame, abajo se ve la estructura, primero se escribe
el nombre con el que se guarda el marco de datos, le sigue el comando para
nombrar <-, la funci´on y entre parentesis los objetos que lo componen; con
print se visualiza el resultado.
> marco.datos<-data.frame(Cantidad, Empresa, Exporta, Precio)
> print(marco.datos)
Cantidad Empresa Exporta Precio
1 17000 Hern´andez 0 20
2 16400 L´opes 0 21
3 16000 Torres 0 22
4 14000 Gonz´alez 1 24
Otra forma de introducir los datos es directamente al data frame, sobre
todo si se trata de una peque˜na cantidad de datos, la forma ser´ıa la siguiente:
> marco.datos<-data.frame(Precio=c(20,21,22,24),
+ Cantidad=c(17000,16400,16000,14000), Exporta=c(0,0,0,1),
+ Empresa=c("Hern´andez", "L´opez", "Torres", "Gonz´alez"))
> print(marco.datos)
3
Precio Cantidad Exporta Empresa
1 20 17000 0 Hern´andez
2 21 16400 0 L´opez
3 22 16000 0 Torres
4 24 14000 1 Gonz´alez
1.2. Importar datos, archivo .csv
Si ya se cuenta con una base de datos creada en una fuente externa, s´olo
basta con importar los datos y darle una estructura en forma de data frame.
La forma de hacerlo ser´a:
Ejemplo 2:
Supongase que se tiene un documento ya creado con los datos, el cual
tiene una extensi´on .csv, adem´as de que est´a guardado dentro de nuestro
espacio de trabajo. Para importar se procede de la forma siguiente:
> datos<-read.csv("datos.csv", header= T, sep=",")
> print(datos)
> datos==marco.datos
La primera l´ınea se lee, de afuera para dentro, se guardar´a en datos el
data frame, la funci´on read.csv sirve para importar los datos de un archivo
con esa extensi´on, dentro del par´entesis se tiene primeramente el nombre
del documento a importar —si no se tuviera guardado dentro del espacio de
trabajo se deber´a escribir la ruta exacta donde se encuentra, como puede ser
”C : /Usuarios/Diego/Documentos/datos.csv”. El argumento header = T
indica que la primera l´ınea del documento contiene el t´ıtulo de las variables,
sep = ”, ” informa que se utiliza a la coma como factor de separaci´on, aunque
algunos documentos utilizan el tabulador, espacio en blanco, etc.
La segunda l´ınea imprime el marco de datos, en este caso omitimos los
resultados por cuesti´on de espacio. La tercera l´ınea compara los valores entre
los dos marcos de datos, dado que son los mismos R regresa solamente TRUE.
1.3. Importar datos, archivo .xls ´o .xlsx
Si los datos a importar provienen de un documento con la extensi´on de una
hoja de calculo, las utilizadas en Excel, la forma de importar los datos cambia.
4
Se requiere la instalaci´on de paquetes especiales para esta tarea.
Ejemplo 3
> install.packages("XLConnect", dependencies = T)
> library("XLConnect")
> datos2<-readWorksheetFromFile("datos.xlsx", sheet=1)
La primera l´ınea se escribe para instalar el paquete necesario para realizar
la importaci´on de los datos, la segunda carga el paquete para ser usado,
finalmente se tiene la instrucci´on para importar los datos, se lee: crea un
nuevo marco de datos y ll´amalo datos 2, utiliza la funci´on readWorksheet-
FromFile para obtener los datos, los argumentos de la funci´on indican donde
est´a el archivo a importar —”datos.xlsx”, sheet=1 le indica a R que se en-
cuentran en la primera hoja. Esta funci´on, como la mayor´ıa, permite realizar
m´as cosas agregando m´as argumentos, como puede ser indicar desde y has-
ta donde importar datos dentro de la hoja de calculo o definir un rango A1:D4.
El paquete XLConnect no es compatible con la versi´on 3.3.0, para saber
qu´e versi´on se tiene instalada se puede utilizar el comando R.version.string y
para saber la versi´on m´as reciente se debe visitar la p´agina oficial R project.
Ejemplo 4
> install.packages("xlsx", dependencies = T)
> library("xlsx")
> datos3<-read.xlsx("datos.xlsx", 1)
Este nuevo paquete permite hacer muchas m´as cosas que s´olo importar
datos, igual que los otros, la tercera l´ınea primeramente indica el nombre
del marco de datos —datos3—, luego est´a la funci´on read.xlsx, cuyo primer
argumento es el nombre del archivo a importar junto con su extensi´on, nueva-
mente si el archivo no est´a guardado dentro de nuestro espacio de trabajo se
debe especificar la ruta completa del archivo. El segundo argumento le dice a
R que ser´a la primera hoja del libro la que se desea importar.
2. Manipular un marco de datos
En esta secci´on se trabaja con la manipulaci´on de un marco de datos, espec´ı-
ficamente con agregar, ordenar, filtrar y eliminar las variables que integran al
5
data frame.
2.1. Agregar y eliminar variables
Un marco de datos se puede entender como un conjunto de vectores o listas
que se agrupan en una estructura similar a una matriz; por variable se deber´a
entender cada uno de los vectores o listas que componen el marco de datos, o
dicho en otras palabras se trata de las columnas. Para agregar una variable
o columna dentro del marco de datos existen diferentes m´etodos, los cuales
resuelven diferentes casos espec´ıficos aqu´ı vamos a presentar una manera muy
simple de hacerlo.
Siguiendo con los mismos datos de los ejemplos anteriores, se tiene un
marco de datos creado, llamado datos que contiene los valores de precio
y cantidad de cinco diferentes empresas, y un par de vectores o listas ya
generados y guardados dentro del espacio de trabajo, los cuales contienen
informaci´on sobre la condici´on de exportaci´on y el nombre de las empresas.
Precio Cantidad
1 20 17000
2 21 16400
3 22 16000
4 24 14000
[,1]
[1,] 0
[2,] 0
[3,] 0
[4,] 1
[,1]
[1,] "Hern´andez"
[2,] "L´opez"
[3,] "Torres"
[4,] "Gonz´alez"
Para agregar los dos vectores dentro de un marco de datos se presenta
una forma muy sencilla de hacerlo, esto es as´ı porque ya se tiene guardada
la informaci´on y su orden se corresponde con la estructura de los diferentes
objetos que se van a unir. En este caso utilizamos la ya conocida funci´on
6
data.frame, la indicaci´on del comando se lee: reescribe en el objeto datos
un marco de datos compuesto del antiguo m´as el vector Exporta y la lista
Empresa; adem´as imprime el resultado para verlo.
> datos<-data.frame(datos, Exporta, Empresa); print(datos)
Precio Cantidad Exporta Empresa
1 20 17000 0 Hern´andez
2 21 16400 0 L´opez
3 22 16000 0 Torres
4 24 14000 1 Gonz´alez
La eliminaci´on de un vector o lista de un marco de datos puede hacerse
de la siguiente forma:
> datos<-datos[-3]
> datos
Precio Cantidad Empresa
1 20 17000 Hern´andez
2 21 16400 L´opez
3 22 16000 Torres
4 24 14000 Gonz´alez
Se ha eliminado la tercera columna del marco de datos, otra manera de
hacerlo es:
> datos[2]<-NULL
> datos
Precio Empresa
1 20 Hern´andez
2 21 L´opez
3 22 Torres
4 24 Gonz´alez
Ahora se ha eliminado la segunda columna del marco de datos, tambi´en
se puede hacer la eliminaci´on atendiendo al nombre de la variable y no a su
posici´on:
7
> datos$Precio<-NULL
> datos
Empresa
1 Hern´andez
2 L´opez
3 Torres
4 Gonz´alez
La eliminaci´on de columnas puede ser simultanea, es decir, eliminar m´as
de una a la vez, siempre y cuando est´en ordenadas se puede usar el m´etodo:
Precio Cantidad Exporta Empresa
1 20 17000 0 Hern´andez
2 21 16400 0 L´opez
3 22 16000 0 Torres
4 24 14000 1 Gonz´alez
> datos[2:4]<-NULL
> datos
Precio
1 20
2 21
3 22
4 24
La salida que se arroja muestra que se han eliminado desde la columna dos
hasta la cuatro —2:4—; si las columnas a eliminar no estuvieran ordenadas,
a´un se puden eliminar en un s´olo paso, aunque se debe cambiar la estructura
de la orden:
> datos[c(1,3:4)]<-NULL
> datos
Cantidad
1 17000
2 16400
3 16000
4 14000
8
El resultado es la eliminaci´on en conjunto de las columnas 1, 3 y 4, dejando
unicamente la informaci´on sobre la cantidad. Si se desea eliminar una o m´as
filas se puede seguir la siguiente estructura [- ’filas a quitar’, - ’columnas a
quitar’].
La orden que se indica abajo elimina desde la fila tres hasta la cuatro,
utilizando -c(3:4), junto con la columna cuatro (-4); por tanto cuando se
utiliza el operados corchete, [filas,columnas], con una coma adentro se indica
tanto las filas como las columnas de un objeto en forma matricial.
> datos[-c(3:4),-4]
Precio Cantidad Exporta
1 20 17000 0
2 21 16400 0
2.2. Ordenar y filtrar variables
La ordenaci´on de las variables, dentro de un marco de datos, es sumamente
sencillo y puede hacerse atendiendo a la posici´on que ocupan o al nombre
asignado, utilizando el comando names() se obtienen los t´ıtulos de las varia-
bles guardadas dentro de un objeto y se puede ver el orden, para ordenar las
variables se utiliza el operador chochete [ ], igual que al eliminar columnas.
> names(datos)
[1] "Precio" "Cantidad" "Exporta" "Empresa"
> datos<-datos[c(4,2,3,1)]#atendiendo a la posici´on
> datos<-datos[c("Empresa", "Cantidad", "Exporta",
+ "Precio")]#utilizando sus nombres
> print(datos)
Empresa Cantidad Exporta Precio
1 Hern´andez 17000 0 20
2 L´opez 16400 0 21
3 Torres 16000 0 22
4 Gonz´alez 14000 1 24
9
Cuadro 1: Algunos operadores usados en R
Aritm´eticos Comparativos L´ogicos
+ suma < menor que ! Negaci´on l´ogica
- resta > mayor que & Y l´ogico
* producto <= menor o igual que | ´O l´ogico
/ divisi´on >= mayor o igual que
ˆ potencia == igual
% % m´odulo != diferente
Fuente: Tomado de Ahumada (2003)
Filtrar valores es m´as complicado ya que se requiere escribir una orden
l´ogica que sea entendida por el programa. Es necesario saber previamente
los operadores l´ogicos que permiten hacer el filtrado de los datos, el cuadro 1
presenta algunos operadores.
La funci´on subset() sirve para filtrar datos, la ventaja que tiene es su
simplicidad, ya que s´olo exige indicar el objeto de donde se objetienen los
datos y un criterio de selecci´on. Supongamos que se quiere conocer el nombre
de las empresas que realizan exportaciones junto con la empresa que ofrece
su producto a menor precio.
> subset(datos, Exporta==1 | Precio==min(Precio),
+ select = "Empresa")
Empresa
1 Hern´andez
4 Gonz´alez
La indicaci´on fue, del objeto datos extrae los elementos que cumplen
con dos requisitos, primero empresas que exportan (Exporta==1) adem´as,
tambi´en queremos (se utiliza el operador |), la empresa que ofrece el menor
precio (Precio==min(Precio)) lo cual se obtiene con ayuda de la funci´on
min(). Como s´olo queremos los nombres de las empresas que cumplen con
los dos requisitos, agregamos el argumento select que es igual a Empresa
porque ese es el t´ıtulo de la columna o variable que contiene los nombres de
las empresas, de no haber seleccionado una columna habr´ıa devuelto toda la
estructura del marco de datos.
10
Cuadro 2: Marcos de datos
Tabla A Tabla B Tabla C Tabla D
id age height gender id id math science id eyes
A 24 1.80 M A A 6.5 7.2 A blue
B 25 1.90 M B B 8.9 8.4 B brown
C 17 1.75 F C C 7.4 6.5 C green
D 19 1.65 F D D 9.2 8.7 D black
Fuente: tomado de R-econometr´ıa (2003)
2.3. Combinar marcos de datos
Suponga que se tienen diferentes marcos de datos y se desea unirlos res-
petando un orden definido por una variable clave, contenida en cada uno de
los data frame a unir. Para realizar esta tarea la funci´on merge() ofrece un
resultado satisfactorio, con el inconveniente de que la uni´on se hace una a la
vez, para simplificar la tarea se puede combinar con el comando Reduce();
para ejemplificar su utilizaci´on replicaremos un ejercicio que se encuentra en
la web, dentro del blog R-econometr´ıa.
> A <- data.frame(id = c("A", "B", "C", "D"), age = c(24, 25,
+ 17, 19), height = c(1.8, 1.9, 1.75, 1.65))
> B <- data.frame(gender = c("M", "M", "F", "F"), id = c("A",
+ "B", "C", "D"))
> C <- data.frame(id = c("A", "B", "C", "D"), math = c(6.5,
+ 8.9, 7.4, 9.2), science = c(7.2, 8.4, 6.5, 8.7))
> D <- data.frame(id = c("A", "B", "C", "D"), eyes = c("blue",
+ "brown", "green", "black"))
Con el c´odigo anterior se introducen cuatro diferentes marcos de datos,
cada uno de ellos comparte una misma variable (id), el cuadro 2 muestra
todos los marcos de datos, una carcateristica es que la variable id se encuentra
siempre ordenada en forma descendente, sin embargo para combinar los datos
ne se requiere tener los datos ordenados.
> nuevo.df<-Reduce(merge, list(A,B,C,D))
El c´odigo arroja un nuevo marco de datos de nombre: nuevo.df que contiene
siete variables: id, age, height, gender, math, science y eyes, todas las variables
se ordenaron en funci´on a la variable id. La combinaci´on de funciones permite
agilizar la combinaci´on, ya que permite combinar un gran n´umero de marcos
a la vez.
11
3. Exportar un marco de datos
Una vez que se ha terminado de trabajar, total o parcialmente, con el marco
de datos, es conveniente conocer la forma de exportar la informaci´on, ya
sea para compartirla o trabajar en otro lugar y con otro equipo. La funci´on
apropiada para esa tarea es write(), aunque existen variaciones de la misma
como write.csv() y write.table(). La primera funci´on es la m´as sencilla usual-
mente utilizada para los objetos que son matrices, no propiamente un data
frame. La segunda funci´on exporta el data frame reconomiendo al punto (.)
como separador de decimales y a la coma (,) como separador de datos; la
versi´on write.csv2() se recomienda para los usuarios europeos, ya que cambia
la configuraci´on de los separadores. Con la ´utlima funci´on se puede modificar
todos los par´ametros.
> write.csv(nuevo.df, file="df.csv")
Conclusi´on
Este no es un trabajo exahustivo ni avanzado sobre el manejo de un marco
de datos, est´a orientado a quienes se inician en el uso de R. Los ejemplos son
ilustrativos y s´olo indican una manera de utilizar las funciones, ya que los
argumentos de las mismas permiten elaborar configuraciones m´as diversas,
atendiendo a las necesidades espec´ıficas de cada tarea. Para la elaboraci´on del
trabajo se consultaron diferentes fuentes, quedan enlistadas a continuaci´on.
Referencias
Unir varios data.frames en un s´olo paso: ’merge’ y ’re-
duce’. URL http://r-econ.blogspot.mx/2012/07/
unir-varios-dataframes-en-un-solo-paso.html.
R tutorial on reading and importing excel files into r.
URL https://www.datacamp.com/community/tutorials/
r-tutorial-read-excel-into-r.
Jorge A Ahumada. R para principiantes. University of Hawaii, 2003.
MA Morales. Generaci´on autom´atica de reportes con r y latex. Technical
report, Technical report, http://cran. r-project. org/doc/contrib/Rivera-
Tutorial Sweave. pdf, 2006.
12

Más contenido relacionado

La actualidad más candente

La actualidad más candente (12)

Larissa que es access
Larissa que es accessLarissa que es access
Larissa que es access
 
Concepto de base de datos
Concepto de base de datosConcepto de base de datos
Concepto de base de datos
 
Base de datos cjcm
Base de datos cjcm Base de datos cjcm
Base de datos cjcm
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Base de datos
Base de datosBase de datos
Base de datos
 
Bases de datos
Bases de datos Bases de datos
Bases de datos
 
Postgresql
PostgresqlPostgresql
Postgresql
 
Ba se de datos! ♥
Ba se de datos! ♥Ba se de datos! ♥
Ba se de datos! ♥
 
Juliana bautista
Juliana bautistaJuliana bautista
Juliana bautista
 
Bases de datos angierivera (2)
Bases de datos angierivera (2)Bases de datos angierivera (2)
Bases de datos angierivera (2)
 
Base de Datos 11:02
Base de Datos 11:02Base de Datos 11:02
Base de Datos 11:02
 

Similar a Data frame

Presentacion_de_R_para_el_Congreso.ppt
Presentacion_de_R_para_el_Congreso.pptPresentacion_de_R_para_el_Congreso.ppt
Presentacion_de_R_para_el_Congreso.pptRobertoMarciano6
 
Primeros pasos con Talent Open Studio TOS : Importando datos
Primeros pasos con Talent Open Studio TOS : Importando datosPrimeros pasos con Talent Open Studio TOS : Importando datos
Primeros pasos con Talent Open Studio TOS : Importando datosHeliberto Arias
 
Resumen tema-1-fila 2
Resumen tema-1-fila 2Resumen tema-1-fila 2
Resumen tema-1-fila 2yuriciitha
 
Resumen tema-1-fila 2
Resumen tema-1-fila 2Resumen tema-1-fila 2
Resumen tema-1-fila 2yuriciitha
 
Acceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidorAcceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidorJomicast
 
Acceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicAcceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicgerardd98
 
Acceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicAcceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicAlfredo Joya
 
Clases BASE DE DATOS 2022.pptx
Clases BASE DE DATOS  2022.pptxClases BASE DE DATOS  2022.pptx
Clases BASE DE DATOS 2022.pptxMegaComputer2
 
Access_2000___Unidad_1
Access_2000___Unidad_1Access_2000___Unidad_1
Access_2000___Unidad_1damarysesther
 
Programación de macros en excel
Programación de macros en excelProgramación de macros en excel
Programación de macros en excelBerthamazon
 
Diapositivas de acceso a datos ado.net
Diapositivas de acceso a datos ado.netDiapositivas de acceso a datos ado.net
Diapositivas de acceso a datos ado.netTAPIA SILVA EVELINA
 

Similar a Data frame (20)

Presentacion_de_R_para_el_Congreso.ppt
Presentacion_de_R_para_el_Congreso.pptPresentacion_de_R_para_el_Congreso.ppt
Presentacion_de_R_para_el_Congreso.ppt
 
Primeros pasos con Talent Open Studio TOS : Importando datos
Primeros pasos con Talent Open Studio TOS : Importando datosPrimeros pasos con Talent Open Studio TOS : Importando datos
Primeros pasos con Talent Open Studio TOS : Importando datos
 
Resumen tema-1-fila 2
Resumen tema-1-fila 2Resumen tema-1-fila 2
Resumen tema-1-fila 2
 
Resumen tema-1-fila 2
Resumen tema-1-fila 2Resumen tema-1-fila 2
Resumen tema-1-fila 2
 
Tutorial bd y php
Tutorial bd y phpTutorial bd y php
Tutorial bd y php
 
Acceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidorAcceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidor
 
German sgbd
German sgbdGerman sgbd
German sgbd
 
Acceso a datos
Acceso a datosAcceso a datos
Acceso a datos
 
2 preprocesado
2 preprocesado2 preprocesado
2 preprocesado
 
Resumen ecxel
Resumen ecxelResumen ecxel
Resumen ecxel
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
Acceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicAcceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basic
 
Acceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basicAcceso a datos con ado.net en visual basic
Acceso a datos con ado.net en visual basic
 
Clases BASE DE DATOS 2022.pptx
Clases BASE DE DATOS  2022.pptxClases BASE DE DATOS  2022.pptx
Clases BASE DE DATOS 2022.pptx
 
Access_2000___Unidad_1
Access_2000___Unidad_1Access_2000___Unidad_1
Access_2000___Unidad_1
 
Macros
MacrosMacros
Macros
 
Programación de macros en excel
Programación de macros en excelProgramación de macros en excel
Programación de macros en excel
 
bd.net.pptx
bd.net.pptxbd.net.pptx
bd.net.pptx
 
Laboratorio_1.pdf
Laboratorio_1.pdfLaboratorio_1.pdf
Laboratorio_1.pdf
 
Diapositivas de acceso a datos ado.net
Diapositivas de acceso a datos ado.netDiapositivas de acceso a datos ado.net
Diapositivas de acceso a datos ado.net
 

Último

Listas de Fundamentos de Programación 2024
Listas de Fundamentos de Programación 2024Listas de Fundamentos de Programación 2024
Listas de Fundamentos de Programación 2024AndrsReinosoSnchez1
 
Las familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfLas familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfJC Díaz Herrera
 
llllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllJulietaCarbajalOsis
 
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticAnálisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticJamithGarcia1
 
Evolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdfEvolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdfJC Díaz Herrera
 
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
Novelas Turcas vs Series de EUA en audiencia  (2024).pdfNovelas Turcas vs Series de EUA en audiencia  (2024).pdf
Novelas Turcas vs Series de EUA en audiencia (2024).pdfJC Díaz Herrera
 
Los artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdfLos artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdfJC Díaz Herrera
 
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdfIndustria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdfJC Díaz Herrera
 
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdfPosiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdfJC Díaz Herrera
 
Gestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalGestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalMarcosAlvarezSalinas
 
Posiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdfPosiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdfJC Díaz Herrera
 
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICACNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICAYOSHELINSARAIMAMANIS2
 
Cesar Vilchis Vieyra Cesar Vilchis Vieyra
Cesar Vilchis Vieyra  Cesar Vilchis VieyraCesar Vilchis Vieyra  Cesar Vilchis Vieyra
Cesar Vilchis Vieyra Cesar Vilchis Vieyraestudiantes2010
 
Tipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptxTipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptxMiguelPerz4
 
Partes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicosPartes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicosMarycarmenNuez4
 
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxAA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxLuisAngelYomonaYomon
 
Posiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdfPosiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdfJC Díaz Herrera
 
Qué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaQué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaJoellyAlejandraRodrg
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfJC Díaz Herrera
 
Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...israel garcia
 

Último (20)

Listas de Fundamentos de Programación 2024
Listas de Fundamentos de Programación 2024Listas de Fundamentos de Programación 2024
Listas de Fundamentos de Programación 2024
 
Las familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfLas familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdf
 
llllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllll
 
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticAnálisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
 
Evolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdfEvolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdf
 
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
Novelas Turcas vs Series de EUA en audiencia  (2024).pdfNovelas Turcas vs Series de EUA en audiencia  (2024).pdf
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
 
Los artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdfLos artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdf
 
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdfIndustria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
 
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdfPosiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
 
Gestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalGestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajal
 
Posiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdfPosiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdf
 
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICACNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
 
Cesar Vilchis Vieyra Cesar Vilchis Vieyra
Cesar Vilchis Vieyra  Cesar Vilchis VieyraCesar Vilchis Vieyra  Cesar Vilchis Vieyra
Cesar Vilchis Vieyra Cesar Vilchis Vieyra
 
Tipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptxTipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptx
 
Partes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicosPartes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicos
 
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxAA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
 
Posiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdfPosiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdf
 
Qué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaQué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problema
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
 
Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...
 

Data frame

  • 1. Manejo de un marco de datos en R Diego Torres Estudiante de econom´ıa aplicada COLEF 4 de julio de 2016 Resumen Este trabajo tiene como objetivo explicar el manejo b´asico de un marco de datos o data frame dentro del entorno R. A trav´es de ejemplos sim- ples se pretende ense˜nar el manejo del objeto m´as com´un del lenguaje R. Dado que, tener una base de datos sobre la cual actuar, es el primer paso para cualquier an´alisis estad´ıstico y/o econom´etrico, se ofrece el siguiente documento como referencia para los que se inician en el uso de este programa estad´ıstico. Palabras clave: Lenguaje R, data frame, LATEX, Sweave Introducci´on Este trabajo fue elaborado con R, utilizando la herramienta Sweave que per- mite combinar codigo escrito en R con texto compilado en LATEX. El objetivo es presentar un manejo simple del principal objeto utilizado en R: marco de datos o data frame. Una vez realizadas estas primeras acciones se puede avanzar en el an´alisis propio de los datos. El trabajo est´a orientado para quienes se inician en el uso de R, utilizando ejemplos muy sencillos se presenta y explica la manera de realizar tareas sencillas, pero importantes para el an´alisis de datos. La raz´on de escribir este trabajo se debe a los problemas que enfrent´e al trabajar con la encuesta de ocupaci´on y empleo de M´exico, la cual ofrece una 1
  • 2. gran cantidad de informaci´on en microdatos; son tantos datos que la encuesta est´a dividida en dos partes y aunque hay herramientas m´as intuitivas para trabajar con ´estos como Excel de Microsoft Office, ´este no puede cargar tanta cantidad de informaci´on. La estructura del informe se divide en tres apartados, en el primero se aborda el tema de importaci´on de datos, posteriormente la manipulaci´on inical de los mismos, en particular tareas como agregar o eliminar variables; ordenar y filtrar variables; combinar marcos de datos. El tercer apartado trata sobre la exportaci´on de un marco de datos, lo cual es ´util cuando se quiere compartir la informaci´on con la que se trabajo o se quiere su portabilidad para seguir trabajando en otra computadora. Tambi´en se ofrece una breve conclusi´on sobre el trabajo. 1. Importar datos Para tener un trabajo ordenado, recomiendo crear un proyecto y establecer un directorio de trabajo para cada proyecto, lo anterior consiste en definir una carpeta en la que se guardar´a toda la informaci´on de las sesiones. La creaci´on de un nuevo proyecto se hace desde la barra de menus, dentro de la pesta˜na file. Al hacerlo R pedir´a seleccionar un directorio de trabajo, se puede ele- gir entre uno ya existente o nuevo, basta seguir las instrucciones para definirlo. Uno vez hecho lo anterior, el siguiente paso es introducir los datos, para ello se puede introducirlos a mano o importarlos desde una fuente externa, veamos como hacerlo. 1.1. Introducir datos desde R Los siguientes ejemplos muestran diferentes maneras de introducir los datos. Ejemplo 1: Se puede introducir cada vector o lista de manera individual y posteriormente juntarlos dentro de un marco de datos. > Precio<-c(20,21,22,24) > Cantidad<-c(17000,16400,16000,14000) 2
  • 3. > Exporta<-c(0,0,0,1) > Empresa<-c("Hern´andez", "L´opes", "Torres", "Gonz´alez") Se le ha indicado a R lo siguiente, la primera linea le informa que de- be crear un vector llamado Precio, compuesto de cuatro valores num´ericos: 20, 21, 22 y 24; de manera similar para las siguientes dos l´ıneas, cambian- do el nombre de la variable y sus valores, sin embargo, la cuarta l´ınea le indica a R que cre´e una lista de caracteres, los argumentos est´an entre comillas. Se puede utilizar la funci´on ls para conocer cu´antos y cu´ales objetos tene- mos cargados en el entorno R, al utilizarlo se tiene lo siguiente: > ls() [1] "Cantidad" "Empresa" "Exporta" "Precio" Ahora se requiere unir los objetos dentro de un marco de datos, se logra usando la funci´on data.frame, abajo se ve la estructura, primero se escribe el nombre con el que se guarda el marco de datos, le sigue el comando para nombrar <-, la funci´on y entre parentesis los objetos que lo componen; con print se visualiza el resultado. > marco.datos<-data.frame(Cantidad, Empresa, Exporta, Precio) > print(marco.datos) Cantidad Empresa Exporta Precio 1 17000 Hern´andez 0 20 2 16400 L´opes 0 21 3 16000 Torres 0 22 4 14000 Gonz´alez 1 24 Otra forma de introducir los datos es directamente al data frame, sobre todo si se trata de una peque˜na cantidad de datos, la forma ser´ıa la siguiente: > marco.datos<-data.frame(Precio=c(20,21,22,24), + Cantidad=c(17000,16400,16000,14000), Exporta=c(0,0,0,1), + Empresa=c("Hern´andez", "L´opez", "Torres", "Gonz´alez")) > print(marco.datos) 3
  • 4. Precio Cantidad Exporta Empresa 1 20 17000 0 Hern´andez 2 21 16400 0 L´opez 3 22 16000 0 Torres 4 24 14000 1 Gonz´alez 1.2. Importar datos, archivo .csv Si ya se cuenta con una base de datos creada en una fuente externa, s´olo basta con importar los datos y darle una estructura en forma de data frame. La forma de hacerlo ser´a: Ejemplo 2: Supongase que se tiene un documento ya creado con los datos, el cual tiene una extensi´on .csv, adem´as de que est´a guardado dentro de nuestro espacio de trabajo. Para importar se procede de la forma siguiente: > datos<-read.csv("datos.csv", header= T, sep=",") > print(datos) > datos==marco.datos La primera l´ınea se lee, de afuera para dentro, se guardar´a en datos el data frame, la funci´on read.csv sirve para importar los datos de un archivo con esa extensi´on, dentro del par´entesis se tiene primeramente el nombre del documento a importar —si no se tuviera guardado dentro del espacio de trabajo se deber´a escribir la ruta exacta donde se encuentra, como puede ser ”C : /Usuarios/Diego/Documentos/datos.csv”. El argumento header = T indica que la primera l´ınea del documento contiene el t´ıtulo de las variables, sep = ”, ” informa que se utiliza a la coma como factor de separaci´on, aunque algunos documentos utilizan el tabulador, espacio en blanco, etc. La segunda l´ınea imprime el marco de datos, en este caso omitimos los resultados por cuesti´on de espacio. La tercera l´ınea compara los valores entre los dos marcos de datos, dado que son los mismos R regresa solamente TRUE. 1.3. Importar datos, archivo .xls ´o .xlsx Si los datos a importar provienen de un documento con la extensi´on de una hoja de calculo, las utilizadas en Excel, la forma de importar los datos cambia. 4
  • 5. Se requiere la instalaci´on de paquetes especiales para esta tarea. Ejemplo 3 > install.packages("XLConnect", dependencies = T) > library("XLConnect") > datos2<-readWorksheetFromFile("datos.xlsx", sheet=1) La primera l´ınea se escribe para instalar el paquete necesario para realizar la importaci´on de los datos, la segunda carga el paquete para ser usado, finalmente se tiene la instrucci´on para importar los datos, se lee: crea un nuevo marco de datos y ll´amalo datos 2, utiliza la funci´on readWorksheet- FromFile para obtener los datos, los argumentos de la funci´on indican donde est´a el archivo a importar —”datos.xlsx”, sheet=1 le indica a R que se en- cuentran en la primera hoja. Esta funci´on, como la mayor´ıa, permite realizar m´as cosas agregando m´as argumentos, como puede ser indicar desde y has- ta donde importar datos dentro de la hoja de calculo o definir un rango A1:D4. El paquete XLConnect no es compatible con la versi´on 3.3.0, para saber qu´e versi´on se tiene instalada se puede utilizar el comando R.version.string y para saber la versi´on m´as reciente se debe visitar la p´agina oficial R project. Ejemplo 4 > install.packages("xlsx", dependencies = T) > library("xlsx") > datos3<-read.xlsx("datos.xlsx", 1) Este nuevo paquete permite hacer muchas m´as cosas que s´olo importar datos, igual que los otros, la tercera l´ınea primeramente indica el nombre del marco de datos —datos3—, luego est´a la funci´on read.xlsx, cuyo primer argumento es el nombre del archivo a importar junto con su extensi´on, nueva- mente si el archivo no est´a guardado dentro de nuestro espacio de trabajo se debe especificar la ruta completa del archivo. El segundo argumento le dice a R que ser´a la primera hoja del libro la que se desea importar. 2. Manipular un marco de datos En esta secci´on se trabaja con la manipulaci´on de un marco de datos, espec´ı- ficamente con agregar, ordenar, filtrar y eliminar las variables que integran al 5
  • 6. data frame. 2.1. Agregar y eliminar variables Un marco de datos se puede entender como un conjunto de vectores o listas que se agrupan en una estructura similar a una matriz; por variable se deber´a entender cada uno de los vectores o listas que componen el marco de datos, o dicho en otras palabras se trata de las columnas. Para agregar una variable o columna dentro del marco de datos existen diferentes m´etodos, los cuales resuelven diferentes casos espec´ıficos aqu´ı vamos a presentar una manera muy simple de hacerlo. Siguiendo con los mismos datos de los ejemplos anteriores, se tiene un marco de datos creado, llamado datos que contiene los valores de precio y cantidad de cinco diferentes empresas, y un par de vectores o listas ya generados y guardados dentro del espacio de trabajo, los cuales contienen informaci´on sobre la condici´on de exportaci´on y el nombre de las empresas. Precio Cantidad 1 20 17000 2 21 16400 3 22 16000 4 24 14000 [,1] [1,] 0 [2,] 0 [3,] 0 [4,] 1 [,1] [1,] "Hern´andez" [2,] "L´opez" [3,] "Torres" [4,] "Gonz´alez" Para agregar los dos vectores dentro de un marco de datos se presenta una forma muy sencilla de hacerlo, esto es as´ı porque ya se tiene guardada la informaci´on y su orden se corresponde con la estructura de los diferentes objetos que se van a unir. En este caso utilizamos la ya conocida funci´on 6
  • 7. data.frame, la indicaci´on del comando se lee: reescribe en el objeto datos un marco de datos compuesto del antiguo m´as el vector Exporta y la lista Empresa; adem´as imprime el resultado para verlo. > datos<-data.frame(datos, Exporta, Empresa); print(datos) Precio Cantidad Exporta Empresa 1 20 17000 0 Hern´andez 2 21 16400 0 L´opez 3 22 16000 0 Torres 4 24 14000 1 Gonz´alez La eliminaci´on de un vector o lista de un marco de datos puede hacerse de la siguiente forma: > datos<-datos[-3] > datos Precio Cantidad Empresa 1 20 17000 Hern´andez 2 21 16400 L´opez 3 22 16000 Torres 4 24 14000 Gonz´alez Se ha eliminado la tercera columna del marco de datos, otra manera de hacerlo es: > datos[2]<-NULL > datos Precio Empresa 1 20 Hern´andez 2 21 L´opez 3 22 Torres 4 24 Gonz´alez Ahora se ha eliminado la segunda columna del marco de datos, tambi´en se puede hacer la eliminaci´on atendiendo al nombre de la variable y no a su posici´on: 7
  • 8. > datos$Precio<-NULL > datos Empresa 1 Hern´andez 2 L´opez 3 Torres 4 Gonz´alez La eliminaci´on de columnas puede ser simultanea, es decir, eliminar m´as de una a la vez, siempre y cuando est´en ordenadas se puede usar el m´etodo: Precio Cantidad Exporta Empresa 1 20 17000 0 Hern´andez 2 21 16400 0 L´opez 3 22 16000 0 Torres 4 24 14000 1 Gonz´alez > datos[2:4]<-NULL > datos Precio 1 20 2 21 3 22 4 24 La salida que se arroja muestra que se han eliminado desde la columna dos hasta la cuatro —2:4—; si las columnas a eliminar no estuvieran ordenadas, a´un se puden eliminar en un s´olo paso, aunque se debe cambiar la estructura de la orden: > datos[c(1,3:4)]<-NULL > datos Cantidad 1 17000 2 16400 3 16000 4 14000 8
  • 9. El resultado es la eliminaci´on en conjunto de las columnas 1, 3 y 4, dejando unicamente la informaci´on sobre la cantidad. Si se desea eliminar una o m´as filas se puede seguir la siguiente estructura [- ’filas a quitar’, - ’columnas a quitar’]. La orden que se indica abajo elimina desde la fila tres hasta la cuatro, utilizando -c(3:4), junto con la columna cuatro (-4); por tanto cuando se utiliza el operados corchete, [filas,columnas], con una coma adentro se indica tanto las filas como las columnas de un objeto en forma matricial. > datos[-c(3:4),-4] Precio Cantidad Exporta 1 20 17000 0 2 21 16400 0 2.2. Ordenar y filtrar variables La ordenaci´on de las variables, dentro de un marco de datos, es sumamente sencillo y puede hacerse atendiendo a la posici´on que ocupan o al nombre asignado, utilizando el comando names() se obtienen los t´ıtulos de las varia- bles guardadas dentro de un objeto y se puede ver el orden, para ordenar las variables se utiliza el operador chochete [ ], igual que al eliminar columnas. > names(datos) [1] "Precio" "Cantidad" "Exporta" "Empresa" > datos<-datos[c(4,2,3,1)]#atendiendo a la posici´on > datos<-datos[c("Empresa", "Cantidad", "Exporta", + "Precio")]#utilizando sus nombres > print(datos) Empresa Cantidad Exporta Precio 1 Hern´andez 17000 0 20 2 L´opez 16400 0 21 3 Torres 16000 0 22 4 Gonz´alez 14000 1 24 9
  • 10. Cuadro 1: Algunos operadores usados en R Aritm´eticos Comparativos L´ogicos + suma < menor que ! Negaci´on l´ogica - resta > mayor que & Y l´ogico * producto <= menor o igual que | ´O l´ogico / divisi´on >= mayor o igual que ˆ potencia == igual % % m´odulo != diferente Fuente: Tomado de Ahumada (2003) Filtrar valores es m´as complicado ya que se requiere escribir una orden l´ogica que sea entendida por el programa. Es necesario saber previamente los operadores l´ogicos que permiten hacer el filtrado de los datos, el cuadro 1 presenta algunos operadores. La funci´on subset() sirve para filtrar datos, la ventaja que tiene es su simplicidad, ya que s´olo exige indicar el objeto de donde se objetienen los datos y un criterio de selecci´on. Supongamos que se quiere conocer el nombre de las empresas que realizan exportaciones junto con la empresa que ofrece su producto a menor precio. > subset(datos, Exporta==1 | Precio==min(Precio), + select = "Empresa") Empresa 1 Hern´andez 4 Gonz´alez La indicaci´on fue, del objeto datos extrae los elementos que cumplen con dos requisitos, primero empresas que exportan (Exporta==1) adem´as, tambi´en queremos (se utiliza el operador |), la empresa que ofrece el menor precio (Precio==min(Precio)) lo cual se obtiene con ayuda de la funci´on min(). Como s´olo queremos los nombres de las empresas que cumplen con los dos requisitos, agregamos el argumento select que es igual a Empresa porque ese es el t´ıtulo de la columna o variable que contiene los nombres de las empresas, de no haber seleccionado una columna habr´ıa devuelto toda la estructura del marco de datos. 10
  • 11. Cuadro 2: Marcos de datos Tabla A Tabla B Tabla C Tabla D id age height gender id id math science id eyes A 24 1.80 M A A 6.5 7.2 A blue B 25 1.90 M B B 8.9 8.4 B brown C 17 1.75 F C C 7.4 6.5 C green D 19 1.65 F D D 9.2 8.7 D black Fuente: tomado de R-econometr´ıa (2003) 2.3. Combinar marcos de datos Suponga que se tienen diferentes marcos de datos y se desea unirlos res- petando un orden definido por una variable clave, contenida en cada uno de los data frame a unir. Para realizar esta tarea la funci´on merge() ofrece un resultado satisfactorio, con el inconveniente de que la uni´on se hace una a la vez, para simplificar la tarea se puede combinar con el comando Reduce(); para ejemplificar su utilizaci´on replicaremos un ejercicio que se encuentra en la web, dentro del blog R-econometr´ıa. > A <- data.frame(id = c("A", "B", "C", "D"), age = c(24, 25, + 17, 19), height = c(1.8, 1.9, 1.75, 1.65)) > B <- data.frame(gender = c("M", "M", "F", "F"), id = c("A", + "B", "C", "D")) > C <- data.frame(id = c("A", "B", "C", "D"), math = c(6.5, + 8.9, 7.4, 9.2), science = c(7.2, 8.4, 6.5, 8.7)) > D <- data.frame(id = c("A", "B", "C", "D"), eyes = c("blue", + "brown", "green", "black")) Con el c´odigo anterior se introducen cuatro diferentes marcos de datos, cada uno de ellos comparte una misma variable (id), el cuadro 2 muestra todos los marcos de datos, una carcateristica es que la variable id se encuentra siempre ordenada en forma descendente, sin embargo para combinar los datos ne se requiere tener los datos ordenados. > nuevo.df<-Reduce(merge, list(A,B,C,D)) El c´odigo arroja un nuevo marco de datos de nombre: nuevo.df que contiene siete variables: id, age, height, gender, math, science y eyes, todas las variables se ordenaron en funci´on a la variable id. La combinaci´on de funciones permite agilizar la combinaci´on, ya que permite combinar un gran n´umero de marcos a la vez. 11
  • 12. 3. Exportar un marco de datos Una vez que se ha terminado de trabajar, total o parcialmente, con el marco de datos, es conveniente conocer la forma de exportar la informaci´on, ya sea para compartirla o trabajar en otro lugar y con otro equipo. La funci´on apropiada para esa tarea es write(), aunque existen variaciones de la misma como write.csv() y write.table(). La primera funci´on es la m´as sencilla usual- mente utilizada para los objetos que son matrices, no propiamente un data frame. La segunda funci´on exporta el data frame reconomiendo al punto (.) como separador de decimales y a la coma (,) como separador de datos; la versi´on write.csv2() se recomienda para los usuarios europeos, ya que cambia la configuraci´on de los separadores. Con la ´utlima funci´on se puede modificar todos los par´ametros. > write.csv(nuevo.df, file="df.csv") Conclusi´on Este no es un trabajo exahustivo ni avanzado sobre el manejo de un marco de datos, est´a orientado a quienes se inician en el uso de R. Los ejemplos son ilustrativos y s´olo indican una manera de utilizar las funciones, ya que los argumentos de las mismas permiten elaborar configuraciones m´as diversas, atendiendo a las necesidades espec´ıficas de cada tarea. Para la elaboraci´on del trabajo se consultaron diferentes fuentes, quedan enlistadas a continuaci´on. Referencias Unir varios data.frames en un s´olo paso: ’merge’ y ’re- duce’. URL http://r-econ.blogspot.mx/2012/07/ unir-varios-dataframes-en-un-solo-paso.html. R tutorial on reading and importing excel files into r. URL https://www.datacamp.com/community/tutorials/ r-tutorial-read-excel-into-r. Jorge A Ahumada. R para principiantes. University of Hawaii, 2003. MA Morales. Generaci´on autom´atica de reportes con r y latex. Technical report, Technical report, http://cran. r-project. org/doc/contrib/Rivera- Tutorial Sweave. pdf, 2006. 12