在R中按多列排序

用户名

尝试在两列(在这种情况下均为帐户和DATE)上创建排名指示器。

例如:


df <- data.frame(
        Account = c(1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3),
        DATE = c(201901, 201902, 201903, 201904, 201902, 201903, 201904, 201905, 201906, 201907, 201904, 201905))

> df
   Account   DATE
         1 201901
         1 201902
         1 201903
         1 201904
         2 201902
         2 201903
         2 201904
         2 201905
         2 201906
         2 201907
         3 201904
         3 201905

我尝试使用等级和顺序以及rank(rank())和order(order()),但没有运气

df <- df %>%
  mutate("rank" = rank(Account, DATE))
   Account   DATE rank
         1 201901  2.5
         1 201902  2.5
         1 201903  2.5
         1 201904  2.5
         2 201902  7.5
         2 201903  7.5
         2 201904  7.5
         2 201905  7.5
         2 201906  7.5
         2 201907  7.5
         3 201904 11.5
         3 201905 11.5

但是我想要的是它对降序的日期进行排名,但是按每个帐户,它应该看起来像这样:

Account   DATE RANK
      1 201901    4
      1 201902    3
      1 201903    2
      1 201904    1
      2 201902    6
      2 201903    5
      2 201904    4
      2 201905    3
      2 201906    2
      2 201907    1
      3 201904    2
      3 201905    1
施普林格
library("dplyr")

df %>% 
    group_by(Account) %>% 
    mutate("rank" = rank(DATE))
#> # A tibble: 12 x 3
#> # Groups:   Account [3]
#>    Account   DATE  rank
#>      <dbl>  <dbl> <dbl>
#>  1       1 201901     1
#>  2       1 201902     2
#>  3       1 201903     3
#>  4       1 201904     4
#>  5       2 201902     1
#>  6       2 201903     2
#>  7       2 201904     3
#>  8       2 201905     4
#>  9       2 201906     5
#> 10       2 201907     6
#> 11       3 201904     1
#> 12       3 201905     2

reprex包(v0.3.0.9001)创建于2020-03-09

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章