使用 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
我有一个看起来像这样的数据框
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