使用 dplyr 根据 R 中的特定列对数据框进行排序

Sort a dataframe based on a specific column in R with dplyr

我有一个看起来像这样的数据框

df <- data.frame(time=seq(1,4,1),col1=c("a","b","d","c"), col2=c("d","a","c","b"))
df
#>   time col1 col2
#> 1    1    a    d
#> 2    2    b    a
#> 3    3    d    c
#> 4    4    c    b

reprex package (v2.0.1)

于 2021-11-06 创建

我想根据 col2 对我的数据框进行排序,如下所示

  time col1 col2 
    3    d    d
    1    a    a
    4    c    c
    2    b    b

非常感谢任何想法或帮助!

不知道,这是否有意义,但您可以进行自连接:

library(tidyr)
library(dplyr)

df %>% 
  select(col2) %>% 
  inner_join(df %>% mutate(col2 = col1), by = "col2") %>% 
  select(time, col1, col2)

这个returns

  time col1 col2
1    3    d    d
2    1    a    a
3    4    c    c
4    2    b    b

基于 R 的解决方案:

df <- data.frame(time = match(df$col2,df$col1),  col1 = df$col2, col2=df$col2)

#>   time col1 col2
#> 1    3    d    d
#> 2    1    a    a
#> 3    4    c    c
#> 4    2    b    b