Esta respuesta sugiere que hay valor en una gráfica la exploración de relaciones entre las variables y se ilustra de una manera útil. A continuación, proporciona una solución fácil, rápida y automáticamente identifica todas las posibles variables que pueden ser representados por una variable categórica.
Usted puede explorar gráficamente dibujando un diagrama de dispersión de la matriz de las categorías de edad y todas las variables numéricas en el marco de datos. Si hay muchas variables, un resumen de cada uno por la edad y comprobar que caen dentro de los intervalos no se solapan.
Aquí están algunos datos de ejemplo para la ilustración. La agrupación variable V1
, pero vamos a suponer que no sabe que.
#
# Create data for testing.
#
n.obs <- 100
n.vars <- 4
X <- as.data.frame(matrix(round(runif(n.obs*n.vars, 15, 40), 0), n.obs))
#
# Create the dummary variable.
#
cutpoints <- c(-Inf, 20, 25, 30, Inf)
Age <- data.frame(group=cut(X$V1, cutpoints))
Este diagrama de dispersión de la matriz hace obvio que la variable V1
corresponde a los grupos de edad en group
, porque es la única variable que es claramente divididos por un diagrama de dispersión en la group
de fila o de columna:
colors <- rainbow(length(cutpoints), alpha=0.6)
names(colors) <- unique(Age$group)
pairs(cbind(X, Age), pch=21, bg=colors[Age$group])
Recomiendo el uso de este enfoque, en cualquier caso, porque si no las variables se encontró que coinciden con la age
variable (como se muestra a continuación), con este diagrama se puede identificar rápidamente las variables que casi coinciden. Esto puede ser útil para las actividades forenses tales como la identificación de inconsistencias en una tabla de datos.
Un R
implementación de un resumen de la edad de los usos tapply
a romper los datos en grupos por edad y by
para calcular sus áreas de distribución. Si estos son los que no se superponen (tal como lo ordenó by
), tiene un candidato para la correspondencia con la edad.
#
# Identify all columns of X that might match Age.
# The result is a logical vector indicating which fields of X match.
#
candidates <- sapply(names(X), function(f) {
groups <- tapply(X[[f]], Age)
boundaries <- unlist(by(X[f], groups, range))
identical(order(boundaries), 1:length(boundaries))
})
message(paste0("Possible variables are (", paste(names(X)[candidates],
collapse=","), ")."))
La salida es
Posibles variables (V1).
Aunque en este ejemplo se utilizan los datos en el formulario que normalmente se almacena en una base de datos, es decir, como una variable categórica, serán de trabajo sin cambiar cuando Age
es un marco de datos en el formato dado en la pregunta: filas únicas de Age
son utilizados para la agrupación.