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
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
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"
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
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)
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
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