Cómo subconjunto de tablas basándose en el valor de categoría usando el nombre de variable?
Intento reducir una tabla basándome en un valor de categoría. Supongamos que queremos mantener solo a los adultos de los datos del Titanic. Lo que hago es:
data("Titanic")
subset(Titanic, Age == "Adult")
Esto resulta en el error object 'Age' not found
. Usando la misma lógica con dataframes funciona: subset(as.data.frame(Titanic), Age == "Adult")
. Pero, ¿cómo podemos reducir tablas directamente, es decir, sin transformarlas en un dataframe?
EDICIÓN
Aquí Adult
es el número de dimensión tres. En mi caso no sé qué dimensión es, es decir, me gustaría poder reducir por nombre de variable como en subset(Titanic, Age == "Adult")
. Puede ser cualquier otra función base, es decir, no estoy limitado a subset
. Pero estoy buscando una solución base de R.
Mi resultado esperado es:
structure(c(118, 154, 387, 670, 4, 13, 89, 3, 57, 14, 75, 192, 140, 80, 76, 20), .Dim = c(4L, 2L, 2L), .Dimnames = list(Class = c("1st", "2nd", "3rd", "Crew"), Sex = c("Male", "Female"), Survived = c("No", "Yes")), class = "table")
davy.ai
Para subconjuntar una tabla directamente en función de un valor de categoría, necesitamos usar la función
aperm()
para cambiar las dimensiones de la tabla. Suponiendo que el valor de categoría por el cual queremos subconjuntar se encuentra en la tercera dimensión, podemos usar el siguiente código:Aquí, primero usamos
aperm()
para reorganizar las dimensiones de la tabla para que la tercera dimensión sea la primera. Luego, subconjuntamos por la categoría “Adult” usando la notación de subconjunto estándar y, finalmente, usamosaperm()
nuevamente para restaurar las dimensiones originales de la tabla.La tabla resultante
Titanic_subset
debería contener solo los recuentos para la categoría “Adult”.