/ / ¿Mediana de columna y luego buscar otro valor de columna? (R) - r, excel, plyr, mean

Mediana de columna y luego buscar otro valor de columna? (R) - r, excel, plyr, mean

Tengo esta tabla:

Profession Educational_level Number
Doctor     Low               0
Doctor     Medium            5
Doctor     High              8
Nurse      Low               1
Nurse      Medium            8
Nurse      High              3
[...]

Quiero averiguar el nivel educativo de la persona mediana y terminar con esta tabla:

Doctor     High
Nurse      Medium
[...]

Preguntas:

  1. ¿Cómo hago esto en R?
  2. ¿Y en Excel?

Gracias.

Respuestas

2 para la respuesta № 1

Recomiendo la respuesta de @PaulHiemstra si la confianza en paquetes adicionales no es un problema para su flujo de trabajo. De lo contrario, esta es probablemente la forma más fácil de hacerlo en la base R:

df <- read.csv(text="Profession Educational_level Number
Doctor     Low               0
Doctor     Medium            5
Doctor     High              8
Nurse      Low               1
Nurse      Medium            8
Nurse      High              3", header=TRUE)

results <- by(df, INDICES=dat$Profession,
FUN=function(subset) with(subset, Educational_level[which.max(Number)]))
data.frame(names(results), unclass(results))

1 para la respuesta № 2

No creo que estés buscando el nivel educativo medio por profesión, sino el modo, es decir, la categoría con la frecuencia más alta. Para obtener esto, puedes usar ddply del paquete plyr:

require(plyr)
ddply(df, .(Profession), summarise,
mode_educ = Educational_level[which.max(Number)]

dónde df es el data.frame que contiene sus datos.


1 para la respuesta № 3

En Excel podrías usar una "fórmula matricial" como esta

=INDEX(B2:B10,MATCH(1,(A2:A10="Doctor")*(C2:C10=MEDIAN(IF(A2:A10="Doctor",C2:C10))),0))

confirmado con CTRL + MAYÚS + ENTRAR

Eso funciona para tus ejemplos pero para un genuino.mediana, si hubiera 4 médicos, por ejemplo, entonces el valor de la mediana para los médicos está a medio camino entre el segundo y el tercero, por lo tanto, posiblemente no tenga ningún valor en la lista, así que, ¿cómo sabrá qué nivel educativo asignar?