Ich habe einen Datenrahmen wie unten gezeigt.Wie führe ich einen zeilenweisen Vergleich von Zahlen in einem R-Datenrahmen durch
SampleDF <- structure(list(FirstVal = c(100, 230, 450, 600), SecondVal = c(566,
547, 557, 250), ThirdVal = c(782, 479, 823, 178), LowerLimit = c(10,
15, 22, 50), UpperLimit = c(600, 500, 600, 500)), .Names = c("FirstVal",
"SecondVal", "ThirdVal", "LowerLimit", "UpperLimit"), row.names = c(NA,
4L), class = "data.frame")
Ich habe Spalten namens FirstVal, SecondVal and ThirdVal
und zwei berechnete Spalten UpperLimit and LowerLimit
.
Ich versuche, Elemente aus jeder Zeile auszuwählen, die innerhalb der unteren und oberen Grenzen liegen und jedes Element jenseits von UpperLimit verwerfen. Nachdem ich dies beseitigt habe, möchte ich herausfinden, welches Element unter den verbleibenden am größten ist, und es in einer neuen Spalte hinzufügen.
Zusätzlich möchte ich den Spaltennamen mit hinzufügen. Ich habe versucht, dies zu tun, indem ich meinen ursprünglichen Datenrahmen transponierte, aber ich habe Probleme, meine ursprünglichen Spalten zu verweisen.
Wie führe ich zeilenweise Vergleiche in R durch?
Erwartete Ausgabe:
SampleDFNew
FirstVal SecondVal ThirdVal LowerLimit UpperLimit MaxValBelowUpperLim ColumnName
1 100 566 782 10 600 566 SecondVal
2 230 547 479 15 500 479 ThirdVal
3 450 557 823 22 600 557 SecondVal
4 600 250 178 50 500 250 SecondVal
Warum wird die folgenden Fehler geben, wenn ich versuche, innerhalb einer Funktion (glänzend reaktive oder eine einfache Funktion), um das obige Verfahren zu benutzen? 'Fehler in Spaltennamen (x_r) [apply (x_r, 1, which.max)]: Ungültiger Indextyp 'list'' – sunitprasad1