Я хочу отсортировать фрейм данных в длинном формате, как если бы он был в широком формате, но я НЕ хочу изменять структуру фрейма данных, чтобы сделать его более широким.Как этого добиться, используя инструменты tidyverse / dplyr, такие какrange, group, forcats :: fct_reorder и т. Д.
Пример: если бы данные были в широком формате, они бы выглядели так:
df1 <- data.frame(id = c("A", "B", "C"),
col1 = c(8, 8, 7),
col2 = c(7, 9, 3))
id col1 col2
1 A 8 7
2 B 8 9
3 C 7 3
И я бы просто отсортировал его по col1, а затем по col2, в порядке убывания для обоих столбцов, чтобы он просто поменялся местами в первых двух строках.
Как есть, у меня это естьв длинном формате, например:
df2 <- data.frame(id = c("A", "A", "B", "B", "C", "C"),
type = c(1, 2, 1, 2, 1, 2),
value = c(8, 7, 8, 9, 7, 3))
id type value
1 A 1 8
2 A 2 7
3 B 1 8
4 B 2 9
5 C 1 7
6 C 2 3
И после сортировки я хочу, чтобы она выглядела точно так:
id type value
1 B 1 8
2 B 2 9
3 A 1 8
4 A 2 7
5 C 1 7
6 C 2 3
В словах порядка, которые я хочу отсортировать по значению типа 1сначала, и если есть связи, то посмотрите значение типа 2 для сортировки этих связей.