Ich habe einen Datenrahmen, dass ich die Mehrheit mit einem Faktor, z.Mehrheitswahl in R
item category
1 2
1 3
1 2
1 2
2 2
2 3
2 1
2 1
Der Ausgang
item majority_vote
1 2
2 NA
Sie erkennen können die Beispieldaten aus here sein sollte, aber ich will nicht den Modus, möchte ich die tatsächliche Mehrheit der Stimmen (dh mehr als 1/erhalten 2 die Leute wählten diese Option). Daher sollte "Punkt 2" keine Mehrheit haben.
table()
scheint mir nicht zu helfen, weil which.max()
mir nur den modalen Wert geben wird. Ich muss 3 Dinge wissen, die Anzahl der Stimmen, die ich habe, den Namen dieser Option und die Anzahl, wie oft jemand für eine Option gestimmt hat. Ich kann die ersten beiden mit tapply(all_results_filtered$q1, all_results_filtered$X_row_id ,function(x) length(x))
bekommen und tapply(all_results_filtered$q1, all_results_filtered$X_row_id ,function(x) as.numeric(names(which.max(table(x)))))
, aber wie kann ich die Anzahl der Stimmen bekommen für which.max(table(x))
Oder ... gibt es eine einfachere Art und Weise, die ich bin fehlt? Danke! Hier
'Aggregat (Kategorie ~ Artikel, df, Funktion (x) {y <- x [prop.table (Tabelle (x))> 0,5]; ifelse (any (is.null (y)), NA, unique (y))}) ', aber es könnte eine einfachere Option geben – alistaire
Ah! Stehling Psidoms Indexierung von unten, eine einigermaßen nette Basisversion: 'Aggregat (Kategorie ~ Element, df, Funktion (x) {x [prop.table (Tabelle (x))> 0.5] [1]})' – alistaire