Ladebibliothek und Beispieldaten:berechnen oben und niedrigsten zehn Prozent Werte in mehreren Spalten in R
library(MASS)
View(Cars93)
Cars93$ID=1:93
Jetzt möchte ich Cars93
, so dass neue df (sub0l
und sub0h
) der Teilmenge haben alle IDs mit allen Spalten, aber mit nur oben (für df sub0h
) und den niedrigsten 10% -Werten (für df sub0l
) in Spalte 17:25, und Ruhewerte (11-100 Quartil für df sub0l
und 0-90 Quartil für df sub0h
) könnten in NA geändert werden.
Hier ist mein Versuch, zwei dfs mit Top-Ten-% oder niedrigsten zehn% Werte von Spalten 17.25 zu erstellen:
sub0l <- do.call(rbind,by (Cars93,Cars93$ID,FUN= function(x)
subset(Cars93, (Cars93[,17:25] <= quantile(Cars93[,17:25], probs= .10)))))
sub0h <- do.call(rbind,by (Cars93,Cars93$ID,FUN= function(x)
subset(Cars93, (Cars93[,17:25] >= quantile(Cars93[,17:25], probs= .91)))))
ich einen Fehler, während oben und niedrigsten zehn Quartile der Spalt subseting:
Error in `[.data.frame`(Cars93, ,17:25) : undefined columns selected
Called from: `[.data.frame`(Cars93, ,17:25)
Jede bessere Alternative?
Danke für den Kommentar. Ich erhalte immer noch einen Fehler "Fehler in quantile.default (i, probs = 0.1, na.rm = T): Faktoren sind nicht erlaubt. Abgerufen von: quantile.default (i, probs = 0.1, na.rm = T)" – Rocky
anderer, aber ähnlicher Datensatz – Rocky
Danke; Ja, es gab Faktoren in den Daten. Könnten Sie bitte Ihren Code ein wenig erklären, damit er anderen helfen kann, die diesen Beitrag lesen? Es ist in Ordnung, wenn Sie nicht wollen. Für andere Leser, die ähnliche Probleme haben könnten; Probieren Sie diese Codes aus, bevor Sie den obigen Code mit der Antwort ausführen: 'sapply (df, mode)', 'sapply (df, class)', 'welches (colnames (df) ==" Spaltenname ")' zum Überprüfen von Modus, Klasse und Position der Spalte in df. – Rocky