##Introducci?n a R ##Modulo 3 ##Video 3 ### Data Frames #Los *data frames* son probablemente los objetos que m?s utilizar?n en `R`. #Estos consisten en un conjunto de columnas (vectores) del mismo tama?o que, a diferencia de las matrices, #pueden diferir en tipo de datos (ej. columna 1 num?rica y columna 2 con caract?res) matriz <- matrix(10:18, 3) as.data.frame(matriz) a <- c(10,20,30,40) b <- c("libro", "lapiz", "carpeta", "goma") c <- c(TRUE,FALSE,TRUE,FALSE) d <- c(2.5, 8, 10, 7) df <- data.frame(a,b,c,d, stringsAsFactors = FALSE) str(df) #Como ven, los nombres de cada columna (o varible) est?n dados por el nombre que asignamos #inicialmente a cada vector. Estos nombres podemos cambiarlos facilmente. colnames(df) = c("ID", "Producto", "Disponibilidad", "Precio") df #De forma similar a las matrices, podemos acceder a columnas, filas o subconjuntos #de nuestro data frame utilizando [fila, columna]. df[2,3] # valor correspondiente a la fila 2 de la columna 3 df[,4] # toda la columna 4 (variable precio) df[1:2, 2:4] # subconjunto correspondiente a producto, disponibilidad y precio para las dos primeras filas df[, c("ID", "Precio")] # Tambi?n se pueden usar los nombres #De forma similar a las listas, en los data frames se puede acceder a las columnas (o variables) utilizando `$` df$Producto df$Disponibilidad[2:4] # Elementos 2, 3 y 4 de la columna o variable "Disponibilidad" #Utilizar `$` presenta varias ventajas a la hora de trabajar con *data frames*. #Por ejemplo, podemos crear nuevas variables (o columnas) cantidad <- c(3,2,5,7) df$cantidad <- cantidad df df$gasto <- df$Precio*df$cantidad df df$vacia <- NA df (df <- df[,-7]) #O filtrar los datos respecto a otras variables en el *data frame* df[df$Disponibilidad == TRUE,] # Crea un nuevo data frame con aquellas observaciones con disponibilidad = TRUE df[df$Precio > 2.5 | df$cantidad >= 3,] #La operaci?n anterior tambi?n se puede hacer utilizando la funci?n `subset()`. subset(df,Precio > 2.5 | cantidad >= 3) df[order(df$Precio),] df[order(-df$Precio),] df[order(-df$Disponibilidad, -df$Precio),]