Ich absteigende Reihenfolge zur Zeit in dplyr arbeiten und neu zu gestalten:How Do I Top 3 Werte Get eher in aufsteigend zu gehen, als in R/dplyr Paket
Die Df Ich habe hat eine Liste von 45 Städten mit über 10 Datenspalten für jede Stadt. Ich möchte die drei kleinsten Werte für jede Stadt/Reihe.
Ich bin in der Lage, sie durch diese zu bekommen:
new_df <- melt(Df) ## giving me the long form of the data
newer_df2$value2 <- new_df$value * -1
top3 <- newer_df %>% group_by(City) %>% arrange(value2) %>% top_n(3)
mir geben zum Beispiel:
City Value
City 1 -1000
City 1 -999
City 1 -998
city 2 -500
city 2 -499
city 2 -498`
etc ...
So, während dies technisch die Antwort, wäre es viel einfacher, es in der umgekehrten Reihenfolge zu haben, wie unten, also kann ich es als ein csv exportieren, ohne es in Excel zu formatieren.
City Value
City 1 -998
City 1 -999
City 1 -1000
city 2 -498
city 2 -499
city 2 -500`
** Wenn ich mit -1 multiplizieren nicht, es gibt mir die drei höchsten Werte, sondern in der richtigen Reihenfolge
Ab dplyr 0.5 können Sie die unteren 'n' Werte mit negativen Werten in' top_n' auswählen. Um die niedrigsten 3 Werte von "Wert" zu erhalten, können Sie 'top_n (-3, Wert)' verwenden. – aosmith
Sie haben keinen Blick auf das Dokument für 'arrangieren' geworfen. In der ersten Zeile steht '' Verwenden Sie desc, um eine Variable in absteigender Reihenfolge zu sortieren. '' –
Bei der Multiplikation mit der negativen zur Sortierung müssen Sie das Ergebnis nicht in einer neuen Variablen speichern. 'array (-value)' funktioniert genauso gut wie 'array (desc (value))'. Der 'desc()' Ansatz ist flexibler, da er für nicht-numerische Werte funktioniert. – Gregor