Dies ist eine ähnliche Frage wie reordering groups with dataframe, unterscheidet sich jedoch darin, dass es mehr als zwei Variablen gibt. Beispieldaten:R: Mehrere Variablengruppen neu anordnen
raw <- "Date Response ZNumber Latency ZPV
2016-05-04 1 1 445.562 59.666
2016-05-04 2 1 433.890 97.285
2016-05-04 3 1 372.073 53.994
2016-05-04 4 1 282.337 89.686
2016-05-04 4 2 333.186 57.471
2016-05-04 5 1 320.500 71.968
2016-05-04 5 2 280.818 49.187
2016-07-14 1 1 411.849 65.539
2016-07-14 2 1 346.814 50.626"
data <- read.table(text=raw, header = TRUE)
Person 'Date-Antwort-ZNumber' und 'Latency-ZPV' ist immer richtig verbunden. Die ZNumber-Reihenfolge pro Datumsantwort sollte in aufsteigender Reihenfolge der Latenz definiert werden.
Das Problem in meinen Daten ist, dass manchmal, wenn eine Datum-Antwort mehr als eine ZNumber, die Latenz um manchmal nicht die ZNumber um beispielsweise überein Datum = 2016-05-04, Antwort = 4 hat aufsteigende Reihenfolge sowohl in ZNumber als auch in Latency, während Date = 2016-05-04, Response = 5 die ZNumber ist aufsteigend, während Latency absteigend ist.
Ich kann die richtigen Split-Apply-Combine-Operationen nicht finden.
Ausgabe
Was würde ich gerne ausgeführt ist sowohl ZNumber und Latency aufzusteigen zusammen in einer ‚Datum-Antwort‘ Gruppe z.B. Date = 2016.05.04, Response = 5
"Date Response ZNumber Latency ZPV
2016-05-04 1 1 445.562 59.666
2016-05-04 2 1 433.890 97.285
2016-05-04 3 1 372.073 53.994
2016-05-04 4 1 282.337 89.686
2016-05-04 4 2 333.186 57.471
2016-05-04 5 1 280.818 49.187
2016-05-04 5 2 320.500 71.968
2016-07-14 1 1 411.849 65.539
2016-07-14 2 1 346.814 50.626"
dplyr
Zahlreiche Versuche zu lösen, wie unten, haben nicht funktioniert ...
library(dplyr)
data <- data %>%
group_by(Date, Response) %>%
arrange(Latency, ZNumber) %>%
arrange(Date, Response)
oder, wie in der oben verlinkten Frage vorgeschlagen ...
data <- data %>%
arrange(df, group, desc(value))
mit den verschiedenen 'mutierenden Joins' ohne Erfolg. z.B.
data <- data %>%
group_by(Date,Response) %>%
select(Latency) %>%
arrange(Latency) %>%
arrange(Response) %>%
full_join(data,by=c("Date","Response"))
hat jetzt jedoch zwei Latenzspalten.
sessionInfo()
R version 3.3.2 (2016-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
other attached packages:
[1] dplyr_0.5.0
loaded via a namespace (and not attached):
[1] lazyeval_0.2.0 magrittr_1.5 R6_2.2.0 assertthat_0.1 DBI_0.5-1
[6] tools_3.3.2 tibble_1.2 Rcpp_0.12.8
Das sind nur die Daten. Reihenfolge manipuliert keine Datenpunkte. Für * Response * # 5 wird * ZNumber * immer aufsteigen und * Latency * absteigen. Sortieren Sie den einen und den anderen Zähler. Glaub mir nicht? Versuchen Sie, die gewünschte Ausgabe anzuzeigen, damit wir sehen können, ob Sie nach Datenzellenänderungen fragen. – Parfait
Hoppla, ja - bearbeitet mit Ausgabe gewünscht. Auch geklärte Operationen versucht. –