SlideShare una empresa de Scribd logo
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

Larissa que es access
Larissa que es accessLarissa que es access
Larissa que es access
LarissaAglae
 
Concepto de base de datos
Concepto de base de datosConcepto de base de datos
Concepto de base de datos
Johnlamaravilla15
 
Base de datos cjcm
Base de datos cjcm Base de datos cjcm
Base de datos cjcm
yurleytatis19
 
Bases de datos
Bases de datosBases de datos
Bases de datos
Esther Arráez Acuña
 
Bases de datos
Bases de datosBases de datos
Bases de datos
Ãlberto Aguillon M
 
Base de datos
Base de datosBase de datos
Base de datos
jmosorio777
 
Bases de datos
Bases de datos Bases de datos
Bases de datos
7826501
 
Postgresql
PostgresqlPostgresql
Postgresql
jbersosa
 
Ba se de datos! ♥
Ba se de datos! ♥Ba se de datos! ♥
Ba se de datos! ♥
lilianarivero
 
Juliana bautista
Juliana bautistaJuliana bautista
Juliana bautista
mjbautista
 
Bases de datos angierivera (2)
Bases de datos angierivera (2)Bases de datos angierivera (2)
Bases de datos angierivera (2)
angierivera05
 
Base de Datos 11:02
Base de Datos 11:02Base de Datos 11:02
Base de Datos 11:02
fabianleon10
 

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.ppt
RobertoMarciano6
 
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
Heliberto Arias
 
Resumen tema-1-fila 2
Resumen tema-1-fila 2Resumen tema-1-fila 2
Resumen tema-1-fila 2
yuriciitha
 
Resumen tema-1-fila 2
Resumen tema-1-fila 2Resumen tema-1-fila 2
Resumen tema-1-fila 2
yuriciitha
 
Tutorial bd y php
Tutorial bd y phpTutorial bd y php
Tutorial bd y php
Ivan Ramos Laureano
 
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
Jomicast
 
German sgbd
German sgbdGerman sgbd
German sgbd
xyzcronos
 
Acceso a datos
Acceso a datosAcceso a datos
2 preprocesado
2 preprocesado2 preprocesado
2 preprocesado
Alejandro Aguirre
 
Resumen ecxel
Resumen ecxelResumen ecxel
Resumen ecxel
Andreitamaldonado1988
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
Mariana-Rmz
 
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
Alfredo Joya
 
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
gerardd98
 
Clases BASE DE DATOS 2022.pptx
Clases BASE DE DATOS  2022.pptxClases BASE DE DATOS  2022.pptx
Clases BASE DE DATOS 2022.pptx
MegaComputer2
 
Access_2000___Unidad_1
Access_2000___Unidad_1Access_2000___Unidad_1
Access_2000___Unidad_1
damarysesther
 
Programación de macros en excel
Programación de macros en excelProgramación de macros en excel
Programación de macros en excel
Berthamazon
 
Macros
MacrosMacros
bd.net.pptx
bd.net.pptxbd.net.pptx
bd.net.pptx
juan gonzalez
 
Laboratorio_1.pdf
Laboratorio_1.pdfLaboratorio_1.pdf
Laboratorio_1.pdf
LUISRUBERTCAHUANATIJ
 
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
TAPIA 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
 
Programación de macros en excel
Programación de macros en excelProgramación de macros en excel
Programación de macros en excel
 
Macros
MacrosMacros
Macros
 
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

DEFENSA NACIONAL.ppt muy fácil de entender
DEFENSA NACIONAL.ppt muy fácil de entenderDEFENSA NACIONAL.ppt muy fácil de entender
DEFENSA NACIONAL.ppt muy fácil de entender
mvargasleveau
 
Que es una independización de inmueble o predio
Que es una independización de inmueble o predioQue es una independización de inmueble o predio
Que es una independización de inmueble o predio
laguilart
 
Minería de Datos e IA Conceptos, Fundamentos y Aplicaciones.pdf
Minería de Datos e IA  Conceptos, Fundamentos y Aplicaciones.pdfMinería de Datos e IA  Conceptos, Fundamentos y Aplicaciones.pdf
Minería de Datos e IA Conceptos, Fundamentos y Aplicaciones.pdf
MedTechBiz
 
REPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdf
REPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdfREPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdf
REPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdf
IrapuatoCmovamos
 
Sistema informatico, power point asir 1 curso
Sistema informatico, power point asir 1 cursoSistema informatico, power point asir 1 curso
Sistema informatico, power point asir 1 curso
NereaMolina10
 
e learning^.pptxdieguearmandozuñiga. Comhot
e learning^.pptxdieguearmandozuñiga. Comhote learning^.pptxdieguearmandozuñiga. Comhot
e learning^.pptxdieguearmandozuñiga. Comhot
diegozuniga768
 
sistema paralingüística fhdjsjsbsnnssnnsbs
sistema paralingüística fhdjsjsbsnnssnnsbssistema paralingüística fhdjsjsbsnnssnnsbs
sistema paralingüística fhdjsjsbsnnssnnsbs
SantiagoMejia99
 
Semana 09 - Tema 02 Dinámica de cuentas del plan contable.pdf
Semana 09 - Tema 02 Dinámica de cuentas del plan contable.pdfSemana 09 - Tema 02 Dinámica de cuentas del plan contable.pdf
Semana 09 - Tema 02 Dinámica de cuentas del plan contable.pdf
WendyMLaura
 
10 colonias - Análisis socio-demográfico 2024.pdf
10 colonias - Análisis socio-demográfico 2024.pdf10 colonias - Análisis socio-demográfico 2024.pdf
10 colonias - Análisis socio-demográfico 2024.pdf
IrapuatoCmovamos
 
ACOMPAÑAMIENTO INTEGRAL DE VALORES .pptx
ACOMPAÑAMIENTO INTEGRAL DE VALORES .pptxACOMPAÑAMIENTO INTEGRAL DE VALORES .pptx
ACOMPAÑAMIENTO INTEGRAL DE VALORES .pptx
MelanieYuksselleCarr
 
Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...
Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...
Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...
defola5717
 
Comunidades virtuales de aprendizaje o educativas E-LEARNING.pdf
Comunidades virtuales de aprendizaje  o educativas E-LEARNING.pdfComunidades virtuales de aprendizaje  o educativas E-LEARNING.pdf
Comunidades virtuales de aprendizaje o educativas E-LEARNING.pdf
brayansangar73
 
3-Modelamiento de Procesos usando BPMN.ppt
3-Modelamiento de Procesos usando BPMN.ppt3-Modelamiento de Procesos usando BPMN.ppt
3-Modelamiento de Procesos usando BPMN.ppt
nahumrondanurbano
 
U3 y U4 PUD paquete contable - Tercero- nuevo formato.docx
U3 y U4 PUD paquete contable - Tercero- nuevo formato.docxU3 y U4 PUD paquete contable - Tercero- nuevo formato.docx
U3 y U4 PUD paquete contable - Tercero- nuevo formato.docx
ManoloCarrillo
 
contraguerrilla.pdf sobre anti emboscadas
contraguerrilla.pdf sobre anti emboscadascontraguerrilla.pdf sobre anti emboscadas
contraguerrilla.pdf sobre anti emboscadas
DieguinhoSalazar
 
MI CECTOR POSTE BLANCO - Paián .pdf
MI  CECTOR  POSTE  BLANCO - Paián   .pdfMI  CECTOR  POSTE  BLANCO - Paián   .pdf
MI CECTOR POSTE BLANCO - Paián .pdf
GustavoTello19
 
TEMA 10_PROBABILIDADES_UCSM-Semana 12-FASE III.pptx
TEMA 10_PROBABILIDADES_UCSM-Semana 12-FASE III.pptxTEMA 10_PROBABILIDADES_UCSM-Semana 12-FASE III.pptx
TEMA 10_PROBABILIDADES_UCSM-Semana 12-FASE III.pptx
kdorianmen210
 
Encuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdf
Encuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdfEncuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdf
Encuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdf
DivergenteDespierto
 
Estadísticas y Situación Dengue Iquitos 2022
Estadísticas y Situación Dengue Iquitos 2022Estadísticas y Situación Dengue Iquitos 2022
Estadísticas y Situación Dengue Iquitos 2022
bufalo421
 
Informe de violencia mayo 2024 - Multigremial Mayo.pdf
Informe de violencia mayo 2024 - Multigremial Mayo.pdfInforme de violencia mayo 2024 - Multigremial Mayo.pdf
Informe de violencia mayo 2024 - Multigremial Mayo.pdf
Emisor Digital
 

Último (20)

DEFENSA NACIONAL.ppt muy fácil de entender
DEFENSA NACIONAL.ppt muy fácil de entenderDEFENSA NACIONAL.ppt muy fácil de entender
DEFENSA NACIONAL.ppt muy fácil de entender
 
Que es una independización de inmueble o predio
Que es una independización de inmueble o predioQue es una independización de inmueble o predio
Que es una independización de inmueble o predio
 
Minería de Datos e IA Conceptos, Fundamentos y Aplicaciones.pdf
Minería de Datos e IA  Conceptos, Fundamentos y Aplicaciones.pdfMinería de Datos e IA  Conceptos, Fundamentos y Aplicaciones.pdf
Minería de Datos e IA Conceptos, Fundamentos y Aplicaciones.pdf
 
REPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdf
REPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdfREPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdf
REPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdf
 
Sistema informatico, power point asir 1 curso
Sistema informatico, power point asir 1 cursoSistema informatico, power point asir 1 curso
Sistema informatico, power point asir 1 curso
 
e learning^.pptxdieguearmandozuñiga. Comhot
e learning^.pptxdieguearmandozuñiga. Comhote learning^.pptxdieguearmandozuñiga. Comhot
e learning^.pptxdieguearmandozuñiga. Comhot
 
sistema paralingüística fhdjsjsbsnnssnnsbs
sistema paralingüística fhdjsjsbsnnssnnsbssistema paralingüística fhdjsjsbsnnssnnsbs
sistema paralingüística fhdjsjsbsnnssnnsbs
 
Semana 09 - Tema 02 Dinámica de cuentas del plan contable.pdf
Semana 09 - Tema 02 Dinámica de cuentas del plan contable.pdfSemana 09 - Tema 02 Dinámica de cuentas del plan contable.pdf
Semana 09 - Tema 02 Dinámica de cuentas del plan contable.pdf
 
10 colonias - Análisis socio-demográfico 2024.pdf
10 colonias - Análisis socio-demográfico 2024.pdf10 colonias - Análisis socio-demográfico 2024.pdf
10 colonias - Análisis socio-demográfico 2024.pdf
 
ACOMPAÑAMIENTO INTEGRAL DE VALORES .pptx
ACOMPAÑAMIENTO INTEGRAL DE VALORES .pptxACOMPAÑAMIENTO INTEGRAL DE VALORES .pptx
ACOMPAÑAMIENTO INTEGRAL DE VALORES .pptx
 
Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...
Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...
Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...
 
Comunidades virtuales de aprendizaje o educativas E-LEARNING.pdf
Comunidades virtuales de aprendizaje  o educativas E-LEARNING.pdfComunidades virtuales de aprendizaje  o educativas E-LEARNING.pdf
Comunidades virtuales de aprendizaje o educativas E-LEARNING.pdf
 
3-Modelamiento de Procesos usando BPMN.ppt
3-Modelamiento de Procesos usando BPMN.ppt3-Modelamiento de Procesos usando BPMN.ppt
3-Modelamiento de Procesos usando BPMN.ppt
 
U3 y U4 PUD paquete contable - Tercero- nuevo formato.docx
U3 y U4 PUD paquete contable - Tercero- nuevo formato.docxU3 y U4 PUD paquete contable - Tercero- nuevo formato.docx
U3 y U4 PUD paquete contable - Tercero- nuevo formato.docx
 
contraguerrilla.pdf sobre anti emboscadas
contraguerrilla.pdf sobre anti emboscadascontraguerrilla.pdf sobre anti emboscadas
contraguerrilla.pdf sobre anti emboscadas
 
MI CECTOR POSTE BLANCO - Paián .pdf
MI  CECTOR  POSTE  BLANCO - Paián   .pdfMI  CECTOR  POSTE  BLANCO - Paián   .pdf
MI CECTOR POSTE BLANCO - Paián .pdf
 
TEMA 10_PROBABILIDADES_UCSM-Semana 12-FASE III.pptx
TEMA 10_PROBABILIDADES_UCSM-Semana 12-FASE III.pptxTEMA 10_PROBABILIDADES_UCSM-Semana 12-FASE III.pptx
TEMA 10_PROBABILIDADES_UCSM-Semana 12-FASE III.pptx
 
Encuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdf
Encuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdfEncuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdf
Encuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdf
 
Estadísticas y Situación Dengue Iquitos 2022
Estadísticas y Situación Dengue Iquitos 2022Estadísticas y Situación Dengue Iquitos 2022
Estadísticas y Situación Dengue Iquitos 2022
 
Informe de violencia mayo 2024 - Multigremial Mayo.pdf
Informe de violencia mayo 2024 - Multigremial Mayo.pdfInforme de violencia mayo 2024 - Multigremial Mayo.pdf
Informe de violencia mayo 2024 - Multigremial Mayo.pdf
 

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