es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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")
Tags:  , ,

Answer

  1. Avatar for 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:

    data("Titanic")
    Titanic_subset <- aperm(Titanic, c(3, 2, 1))[,"Adult",]
    Titanic_subset <- aperm(Titanic_subset, c(3, 2, 1))
    

    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, usamos aperm() 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”.

Comments are closed.