Data Frame

Data frame es díficil de traducir al castellano, podría traducirse como: Hoja de datos o marco de datos. La estructura de un data frame es muy similar a la de una matriz, la diferencia es que una matriz solo admite valores númericos, mientras que en un dataframe puede incluír también datos alfanuméricos

Crear el vector Nombre

Nombre<-c("José Santos","Angela Díaz","Adriana Sosa","Mayra Costa","Laura López","Nícolás Barrios")

Crear el vector Edad

Edad<-c(17,17,16,15,15,13)

Crear el vector Género

Género<-factor(c("M","F","F","F","F","M"))   

Crear el vector de Nota final NF

NF<-c(92,75,81,87,90,88)

Crear el Data Frame Escuela utilizando la función data.frame

Escuela<-data.frame(Nombre,Edad,Género,NF)

Para visualizar Escuela

Escuela

Mostrar los atributos de Escuela

attributes(Escuela)

Para nombrar las filas se crea un nuevo vector row.names

row.names(Escuela)<-c("linea 1","linea 2","linea 3","linea 4","linea 5","linea 6")
Escuela

Índices de los Data Frames

Elemento de la fila 2, columna 1

Escuela[2,1]

Visualizar toda la fila 2

Escuela[2,]

Visualizar toda la columa 1

Escuela[,1]

Para adicionar una columna se utiliza la función cbind, que combina vector, matriz o marco de datos por columnas.

Escuela<-cbind(Escuela,Categoria=c("A","C","B","B","A","B"))
Escuela

Otro ejemplo

El siguiente ejemplo muestra cómo crear un data frame a partir de los datos recogidos sobre una muestra de 10 personas. Para cada una se ha registrado la edad, género y tiempo hablado por teléfono, en minutos, el día antes de la encuesta

Crear el vector edad_ent

edad_ent<-c(22, 34, 29, 25, 30, 33, 31, 27, 25, 25)

Crear el vector tiempo_ent

tiempo_ent<-c(14.21, 10.36, 11.8, 9, 13.81, 12.03, 10.99, 12.48, 13.37, 12.29)

Crear el vector genero_ent

genero_ent<-c("M","H","H","M","M","H", "M","M","H","H")

Crear el Data Frame Entrevista utilizando la función data.frame

Entrevista<-data.frame(edad_ent,tiempo_ent,genero_ent);Entrevista
##    edad_ent tiempo_ent genero_ent
## 1        22      14.21          M
## 2        34      10.36          H
## 3        29      11.80          H
## 4        25       9.00          M
## 5        30      13.81          M
## 6        33      12.03          H
## 7        31      10.99          M
## 8        27      12.48          M
## 9        25      13.37          H
## 10       25      12.29          H

Para visualizar la estructura del data frame Entrevista se utiliza la función str

str(Entrevista)
## 'data.frame':    10 obs. of  3 variables:
##  $ edad_ent  : num  22 34 29 25 30 33 31 27 25 25
##  $ tiempo_ent: num  14.2 10.4 11.8 9 13.8 ...
##  $ genero_ent: Factor w/ 2 levels "H","M": 2 1 1 2 2 1 2 2 1 1

Para visualizar los nombres de las variables contenidas en Entrevista

names(Entrevista)
## [1] "edad_ent"   "tiempo_ent" "genero_ent"

Acceso a variables dentro de un Data Frame

R dispone de algunas funciones que facilitan la tarea de seleccionar o filtrar datos. Por ejemplo, para ver solamente dos datos de los sujetos (filas) 3 a 6:

Entrevista[3:6,]
##   edad_ent tiempo_ent genero_ent
## 3       29      11.80          H
## 4       25       9.00          M
## 5       30      13.81          M
## 6       33      12.03          H

Para seleccionar los datos de edad (primera columna)

Entrevista[,1]
##  [1] 22 34 29 25 30 33 31 27 25 25

También puede referirse a la columna por su nombre

Entrevista$edad_ent
##  [1] 22 34 29 25 30 33 31 27 25 25

Otra forma

Entrevista[,"edad_ent"]
##  [1] 22 34 29 25 30 33 31 27 25 25
Entrevista[["edad_ent"]]
##  [1] 22 34 29 25 30 33 31 27 25 25

Los siguientes comandos son equivalentes y brindan el mismo resultado:

mean(Entrevista[,1])
## [1] 28.1
mean(Entrevista$edad_ent)
## [1] 28.1
mean(Entrevista[,"edad_ent"])
## [1] 28.1
mean(Entrevista[["edad_ent"]])
## [1] 28.1

Comandos attach y detach

attach sirve para “enganchar” el contenido del data frame al entorno donde R busca los nombres de las variables; sin emplear el nombre del data frame y el símbolo $ detach sirve para “desenganchar” el dataframe Ejemplo

attach(Entrevista)
## The following objects are masked _by_ .GlobalEnv:
## 
##     edad_ent, genero_ent, tiempo_ent
table(tiempo_ent)
## tiempo_ent
##     9 10.36 10.99  11.8 12.03 12.29 12.48 13.37 13.81 14.21 
##     1     1     1     1     1     1     1     1     1     1
table(genero_ent)
## genero_ent
## H M 
## 5 5
table (edad_ent)
## edad_ent
## 22 25 27 29 30 31 33 34 
##  1  3  1  1  1  1  1  1
table(genero_ent,edad_ent)
##           edad_ent
## genero_ent 22 25 27 29 30 31 33 34
##          H  0  2  0  1  0  0  1  1
##          M  1  1  1  0  1  1  0  0
detach(Entrevista)

Sub conjuntos de un data frame

La función subset() permite seleccionar una parte del data frame. Por ejemplo, si el deseo es crear dos data frames nuevos, uno que contenga los hombres y otro con las mujeres

crear el vector Hombres

Hombres<-subset(Entrevista, genero_ent=="H"); Hombres
##    edad_ent tiempo_ent genero_ent
## 2        34      10.36          H
## 3        29      11.80          H
## 6        33      12.03          H
## 9        25      13.37          H
## 10       25      12.29          H

Crear el vector Mujeres

Mujeres<-subset(Entrevista, genero_ent=="M"); Mujeres
##   edad_ent tiempo_ent genero_ent
## 1       22      14.21          M
## 4       25       9.00          M
## 5       30      13.81          M
## 7       31      10.99          M
## 8       27      12.48          M

Ejecutar selecciones más complejas

Seleccionar sujetos que sean hombres y que tengan más de 30 años. La condición “y” se especifica mediante el símbolo “&”

mayores<-subset(Entrevista, genero_ent=="H" & edad_ent>30);mayores
##   edad_ent tiempo_ent genero_ent
## 2       34      10.36          H
## 6       33      12.03          H

Regresar a la página principal de Scripts