r - 在 R 中按特定顺序对数据进行排序

标签 r sorting

假设我有以下数据框;

NUM   status  name
 1       +       A
 2       +       A
 3       +       B 
 4       -       A
 5       -       A 
 6       +       C 
 7       -       C 
 8       +       A
 9       -       B
 10      -       A 

我怎样才能像这样订购它们;

NUM   status  name
 1       +       A
 4       -       A    
 2       +       A
 5       -       A 
 8       +       A   
 10      -       A 
 3       +       B 
 9       -       B
 6       +       C 
 7       -       C 

我想先按名字订购它们。然后按状态。但我需要以这种模式订购状态; +,-,+,- 提前致谢。

最佳答案

我们可以使用row_numberdplyrgroup_by创建一个帮助键来实现特定的顺序

df %>% 
  group_by(name,status) %>%
  mutate(Helpkey=row_number()) %>%
  arrange(name,Helpkey) %>%
  select(-Helpkey)

# A tibble: 10 x 3
# Groups:   name, status [6]
     NUM status  name
   <int>  <chr> <chr>
 1     1      +     A
 2     4      -     A
 3     2      +     A
 4     5      -     A
 5     8      +     A
 6    10      -     A
 7     3      +     B
 8     9      -     B
 9     6      +     C
10     7      -     C

关于r - 在 R 中按特定顺序对数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50606399/

相关文章:

r - 将 R 时间列转换为特定字符串

vba - 使用 VBA 对数据和单元格中的数据进行排序

iOS 根据浮点值排序数组

javascript - 从 A-Z 顺序对数组内的对象进行排序

java - 如何根据两个对象参数对对象链接列表进行排序?

r - 如果字符串包含 R 中的特定文本,则聚合

html - 错误 : object was provided as `children` instead of a component, 字符串或数字(或它们的列表)

r - 如何在knitr R代码块中间插入markdown?

r - 推特:一次获得多个用户的关注者

c++ - 用于排序的更快的字符串比较,用于 unique()