Se utilizan para datos de diferentes tipos. Por ejemplo, si tenemos los vectores
x3 <- letters[1:10]
a9 <- cbind(x1, x2, x3)
¿De qué tipo es a9
? ¿Es eso lo que queríamos? Mejor con un data.frame
:
a10 <- data.frame(x1, x2, x3)
Ahora pueden aplicarse, por ejemplo, algunas técnicas de reducción de dimensión como el análisis de componentes principales:
prcomp(a10[, c(1, 2)]) # comp. principales
prcomp(a10[, c("x1", "x2")])
prcomp(a10[, -3])
También podemos añadir alguna columna a una matriz como datos
:
playa <- c("si", "si", "no", "no")
datos.df <- data.frame(datos, playa)
datos.df$playa
Usar $
facilita el acceso y la creación de nuevas columnas:
set.seed(1) # fija la semilla del random number generator
d1 <- data.frame(g1 = runif(10), g2 = rnorm(10))
d1$edad <- c(rep(20, 5), rep(40, 5))
set.seed(1)
d2 <- cbind(g1 = runif(10), g2 = rnorm(10))
d2[, 3] <- c(rep(20, 5), rep(40, 5)) # error
d2 <- cbind(d2, edad = c(rep(20, 5), rep(40, 5)))
Además, en los data.frame
los “character vectors” se convierten en factores. Podemos convertir matrices a data.frame
con as.data.frame()
. Los data.frame
también tienen rownames
, colnames
.
attributes(a10) # cuando no están definidos
# También podemos usar `dimnames(a10)`
La tabulación cruzada de dos variables cualitativas se consigue con la función table
:
table(sexo, nivel)
Para introducir una tabla de contingencia también se utiliza la instrucción table
. Las variables se definen con sus modalidades con la instrucción expand.grid(var1,var2)
.
resultado <- cbind(expand.grid(calif = c("mejor", "peor", "igual"), tratam = c("A",
"B")))
frec <- c(21, 34, 5, 7, 12, 14)
tabla <- table(calif, tratam) * frec
tabla