Ermitteln der Spaltennummer und des Werts des zweithöchsten Werts in einer Zeile
Ich versuche, einen Code zu schreiben, der die zwei größten Werte für jede Zeile identifiziert und deren Spaltennummer und Wert angibt.
<code>df = data.frame( car = c (2,1,1,1,0), bus = c (0,2,0,1,0), walk = c (0,3,2,0,0), bike = c(0,4,0,0,1)) </code>
Ich habe es geschafft, dies für den maximalen Wert mit dem zu tunmax
undmax.col
funktionen.
<code>df$max = max.col(df,ties.method="first") df$val = apply(df[ ,1:4], 1, max) </code>
Soweit mir bekannt ist, gibt es keine entsprechenden Funktionen für den zweithöchsten Wert. Dies hat die Dinge etwas schwieriger gemacht. Die Verwendung dieses Codes liefert den zweithöchsten Wert, jedoch (wichtig) nicht in Situationen mit Bindungen. Auch es sieht riskant aus.
<code>sec.fun <- function (x) { max( x[x!=max(x)] ) } df$val2 <- apply(df[ ,1:4], 1, sec.fun) </code>
Idealerweise würde die Lösung nicht das Entfernen von Originaldaten beinhalten und könnte verwendet werden, um den dritt-, viert- und höchsten Wert zu finden, aber keine dieser beiden Anforderungen ist wesentlich.