如何按包含不同位数的字符串的列对 data.frame 进行排序?

dam*_*oni 0 r

我想像这样对 df 进行排序:

library(dplyr)
tags <- c("F23-F45", "A69-1008-1", "A69-1008-10", "A69-1008-10", "A69-1008-100", "A69-1008-12")
animal_names <- c("Dim","Dami", "Pet", "Nic", "Li", "Tan")

df <- tibble(tag = tags, animal_name = animal_names)
# A tibble: 6 x 2
  tag          animal_name
  <chr>        <chr>      
1 F23-F45      Dim        
2 A69-1008-1   Dami       
3 A69-1008-10  Pet        
4 A69-1008-10  Nic        
5 A69-1008-100 Li         
6 A69-1008-12  Tan
Run Code Online (Sandbox Code Playgroud)

我想先按 排序tag,然后再按 排序animal_name。通常我使用arrange()dplyr 包的功能来完成此操作。这将导致这个 df:

> df %>% arrange(tag, animal_name)
# A tibble: 6 x 2
  tag          animal_name
  <chr>        <chr>      
1 A69-1008-1   Dami       
2 A69-1008-10  Nic        
3 A69-1008-10  Pet        
4 A69-1008-100 Li         
5 A69-1008-12  Tan        
6 F23-F45      Dim        
Run Code Online (Sandbox Code Playgroud)

但是,我想应用一种数字排序,以便A69-1008-12出现 A69-1008-100. 这个问题已经为向量解决了(参见这个问题),但我想知道如何将它传输到 data.frames?

Pon*_*lis 5

stringr 1.5 中你可以使用arrange(df, str_rank(x,nummeric=T))