name - Subconfigurar un marco de datos por mĂșltiples niveles de factores
subset r studio (3)
Aquí está otro:
data[data$Code == "A" | data$Code == "B", ]
También vale la pena mencionar que el factor de subconjunto no tiene que ser parte del marco de datos si coincide con las filas del marco de datos en longitud y orden. En este caso de todos modos hicimos nuestro marco de datos a partir de este factor. Asi que,
data[Code == "A" | Code == "B", ]
También funciona, que es una de las cosas realmente útiles sobre R.
Esta pregunta ya tiene una respuesta aquí:
¿Cómo puedo evitar el uso de un bucle para subcontratar un marco de datos basado en niveles de múltiples factores?
En el siguiente ejemplo, mi salida deseada es un marco de datos. El marco de datos debe contener las filas del marco de datos original donde el valor en "Código" es igual a uno de los valores en "seleccionado".
Ejemplo de trabajo:
#sample data
Code<-c("A","B","C","D","C","D","A","A")
Value<-c(1, 2, 3, 4, 1, 2, 3, 4)
data<-data.frame(cbind(Code, Value))
selected<-c("A","B") #want rows that contain A and B
#Begin subsetting
result<-data[which(data$Code==selected[1]),]
s1<-2
while(s1<length(selected)+1)
{
result<-rbind(result,data[which(data$Code==selected[s1]),])
s1<-s1+1
}
Este es un ejemplo de juguete de un conjunto de datos mucho más grande, por lo que "seleccionado" puede contener un gran número de elementos y los datos un gran número de filas. Por lo tanto me gustaría evitar el bucle.
Prueba esto:
> data[match(as.character(data$Code), selected, nomatch = FALSE), ]
Code Value
1 A 1
2 B 2
1.1 A 1
1.2 A 1
Puedes usar %in%
data[data$Code %in% selected,]
Code Value
1 A 1
2 B 2
7 A 3
8 A 4