Это аналогичный вопрос reordering groups with dataframe, однако отличается тем, что существует более двух переменных. Пример данные:R: Изменить порядок переменных групп
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)
Индивидуальные 'Дата-ответ-ZNumber' и 'Задержка-ZPV' всегда правильно связан. Порядок ZNumber на дату-ответ должен определяться по возрастанию латентности.
Проблема в моих данных заключается в том, что иногда, когда дата-ответ имеет более одного ZNumber, порядок задержки иногда не соответствует порядку ZNumber, например. Date = 2016-05-04, Response = 4 имеет восходящий порядок как в ZNumber, так и в Latency, тогда как Date = 2016-05-04, Response = 5 ZNumber восходит, когда Latency спускается.
Я не могу найти правильные операции split-apply-comb.
Выход
Что я хотел бы выполняться одновременно ZNumber и Latency подняться вместе в группе 'Date-Response', например, Date = 2016-05-04, ответ = 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
Многочисленные попытки решить, например, как показано ниже, не работал ...
library(dplyr)
data <- data %>%
group_by(Date, Response) %>%
arrange(Latency, ZNumber) %>%
arrange(Date, Response)
или, как предложено в вышеупомянутом связанном вопросе ...
data <- data %>%
arrange(df, group, desc(value))
с различными «мутировавшими объединениями» без успеха. например
data <- data %>%
group_by(Date,Response) %>%
select(Latency) %>%
arrange(Latency) %>%
arrange(Response) %>%
full_join(data,by=c("Date","Response"))
однако теперь есть две колонки латентности.
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
Вот только данные. Заказ не обрабатывает точки данных. Для * Response * # 5, * ZNumber * всегда будет подниматься и * Latency * спускается. Сортируйте один и другие счетчики. Не верьте мне? Попробуйте показать желаемый результат, чтобы мы могли видеть, запрашиваете ли вы изменения ячейки данных. – Parfait
Упс, да - отредактирован с желаемым выходом. Произошли также проясненные операции. –