#r #dplyr
#r #dplyr
Вопрос:
У меня есть фрейм данных, который выглядит следующим образом:
> df <- data_frame(g = c('A', 'A', 'B', 'B', 'B', 'A'), h = c(7, 3, 5, 9, 2, 4), i = c(-7, -3, 5, -9, 2, 4))
> df
# A tibble: 6 x 3
g h i
<chr> <dbl> <dbl>
1 A 7 -7
2 A 3 -3
3 B 5 5
4 B 9 -9
5 B 2 2
6 A 4 4
Я хочу, чтобы выходные данные сначала сортировались по h с использованием групп из g, а затем сортировались I.
> df
# A tibble: 6 x 3
g h i
<chr> <dbl> <dbl>
1 A 7 -7
6 A 3 -3
2 A 4 4
4 B 9 -9
3 B 5 5
5 B 2 2
Я пробовал это, но отрицательные значения сортируются неправильно.
df %>% group_by(g)%>%
arrange(g, desc(h), desc(i))
Комментарии:
1. в h нет дубликатов, поэтому ключ сортировки в I не имеет значения
2. Как правильно выразился Майкл, сортировка по второму столбцу будет работать, если в первом столбце есть дубликаты, иначе как можно сортировать базу данных по двум различным критериям одновременно?
3. Это на самом деле. помогло. Спасибо. @MichaelChirico
Ответ №1:
Похоже, вы хотите отсортировать i
по абсолютному значению.
df %>% group_by(g)%>%
arrange(g, desc(h), desc(abs(i)))
# A tibble: 6 x 3
# Groups: g [2]
g h i
<chr> <dbl> <dbl>
1 A 7 -7
2 A 4 4
3 A 3 -3
4 B 9 -9
5 B 5 5
6 B 2 2
Комментарии:
1. я должен быть -7, -3,4 для A.
Ответ №2:
Вы имеете в виду это?
> df[with(df, order(g, -h, -i)), ]
g h i
1 A 7 -7
6 A 4 4
2 A 3 -3
4 B 9 -9
3 B 5 5
5 B 2 2