Ich habe diesen Tisch:
Profession Educational_level Number
Doctor Low 0
Doctor Medium 5
Doctor High 8
Nurse Low 1
Nurse Medium 8
Nurse High 3
[...]
Ich möchte das Bildungsniveau der Medianperson herausfinden und am Ende folgende Tabelle erhalten:
Doctor High
Nurse Medium
[...]
Fragen:
- Wie mache ich das in R?
- Und in Excel?
Vielen Dank.
Antworten:
2 für die Antwort № 1Ich empfehle die Antwort von @PaulHiemstra, wenn das Verlassen auf zusätzliche Pakete für Ihren Workflow kein Problem darstellt. Andernfalls ist dies wahrscheinlich der einfachste Weg, dies in der Basis R zu tun:
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 für die Antwort № 2
Ich glaube nicht, dass Sie das mittlere Bildungsniveau pro Beruf suchen, sondern den Modus, d. H. Die Kategorie mit der höchsten Häufigkeit ddply
aus dem plyr-paket:
require(plyr)
ddply(df, .(Profession), summarise,
mode_educ = Educational_level[which.max(Number)]
woher df
ist der Datenrahmen, der Ihre Daten enthält.
1 für die Antwort № 3
In Excel können Sie eine solche "Matrixformel" verwenden
=INDEX(B2:B10,MATCH(1,(A2:A10="Doctor")*(C2:C10=MEDIAN(IF(A2:A10="Doctor",C2:C10))),0))
Mit STRG + UMSCHALT + EINGABETASTE bestätigen
Das funktioniert für deine Beispiele aber für eine echteMedian, wenn es zum Beispiel 4 Ärzte gab, dann liegt der Medianwert für Ärzte in der Mitte zwischen dem 2. und 3., daher möglicherweise kein Wert in der Liste. Woher wissen Sie also, welches Bildungsniveau zuzuweisen ist?