Subconjunto de datos en R
R dispone de potentes funciones de indexación para acceder a los elementos de los objetos. Estas características pueden utilizarse para seleccionar y excluir variables y observaciones. Los siguientes fragmentos de código muestran formas de conservar o eliminar variables y observaciones y de tomar muestras aleatorias de un conjunto de datos.
Seleccionar (mantener) variables
# select variables v1, v2, v3
myvars <- c("v1", "v2", "v3")
newdata <- mydata[myvars]
# another method
myvars <- paste("v", 1:3, sep="")
newdata <- mydata[myvars]
# select 1st and 5th thru 10th variables
newdata <- mydata[c(1,5:10)]
Para practicar esto de forma interactiva, prueba los ejercicios de selección de elementos de marcos de datos del capítulo Marcos de datos de este curso de introducción a R.
Excluir (DROPPING) Variables
# exclude variables v1, v2, v3
myvars <- names(mydata) %in% c("v1", "v2", "v3")
newdata <- mydata[!myvars]
# exclude 3rd and 5th variable
newdata <- mydata[c(-3,-5)]
# delete variables v3 and v5
mydata$v3 <- mydata$v5 <- NULL
Seleccionar observaciones
# first 5 observations
newdata <- mydata[1:5,]
# based on variable values
newdata <- mydata[ which(mydata$gender=='F'
& mydata$age > 65), ]
# or
attach(mydata)
newdata <- mydata[which(gender=='F' & age > 65),]
detach(mydata)
Selección mediante la Función Subconjunto
La función subconjunto( ) es la forma más sencilla de seleccionar variables y observaciones. En el siguiente ejemplo, seleccionamos todas las filas que tengan un valor de edad mayor o igual que 20 o de edad menor que 10. Mantenemos las columnas ID y Peso.
# using subset function
newdata <- subset(mydata, age >= 20 | age < 10,
select=c(ID, Weight))
En el siguiente ejemplo, seleccionamos a todos los hombres mayores de 25 años y mantenemos las variables peso a ingresos (peso, ingresos y todas las columnas entre ellos).
# using subset function (part 2)
newdata <- subset(mydata, sex=="m" & age > 25,
select=weight:income)
Para practicar la función subconjunto(), prueba este ejercicio interactivo sobre el subconjunto de datos.tablas.
Muestras aleatorias
Utiliza la función muestra( ) para tomar una muestra aleatoria de tamaño n de un conjunto de datos.
# take a random sample of size 50 from a dataset mydata
# sample without replacement
mysample <- mydata[sample(1:nrow(mydata), 50,
replace=FALSE),]