简体   繁体   English

如何对负值进行排序 - dplyr

[英]How to sort negative values - dplyr

I have a data frame that looks as follows:我有一个如下所示的数据框:

> 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

I want an output first sorted by h using groups from g and then sort I.我想要一个 output 首先使用 g 中的组按 h 排序,然后对 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

I tried this but negative values are not sorting correctly.我试过了,但负值排序不正确。

df %>% group_by(g)%>% 
  arrange(g, desc(h), desc(i))

It looks like you want to sort i by the absolute value.看起来您想按绝对值对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

Do you mean this?你是这个意思吗?

> 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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM