如何使用dplyr

时间:2017-08-29 10:13:31

标签: r dplyr

library(dplyr)
df <- tibble(
  a = rnorm(10),
  b = rnorm(10),
  c = rnorm(10),
  d = rnorm(10)
)

df %>%
  arrange(colnames(df) %>% tail(1) %>% desc())

我循环遍历数据帧列表。数据框中有不同的列,每个列的最后一列可能有不同的名称。

我需要按最后一列安排每个数据框。简单的情况看起来像上面的代码。

3 个答案:

答案 0 :(得分:6)

使用arrange_atncol

df %>% arrange_at(ncol(.), desc)

答案 1 :(得分:3)

如果我们需要arrangelast,请使用名称字符串

df %>% 
     arrange_at(vars(last(names(.))), desc)

或指定索引

df %>%
    arrange_at(ncol(.), desc)

答案 2 :(得分:0)

dplyr 方式(我猜从 1.0.0 开始)将使用 across(last_col())

library(dplyr)

df <- tibble(
    a = rnorm(10),
    b = rnorm(10),
    c = rnorm(10),
    d = rnorm(10)
)

df %>%
    arrange(across(last_col(), desc))

#> # A tibble: 10 x 4
#>          a       b       c       d
#>      <dbl>   <dbl>   <dbl>   <dbl>
#>  1 -0.283   0.443   1.30    0.910 
#>  2  0.797  -0.0819 -0.936   0.828 
#>  3  0.0717 -0.858  -0.355   0.671 
#>  4 -1.38   -1.08   -0.472   0.426 
#>  5  1.52    1.43   -0.0593  0.249 
#>  6  0.827  -1.28    1.86    0.0824
#>  7 -0.448   0.0558 -1.48   -0.143 
#>  8  0.377  -0.601   0.238  -0.918 
#>  9  0.770   1.93    1.23   -1.43  
#> 10  0.0532 -0.0934 -1.14   -2.08
> packageVersion("dplyr")
#> [1] ‘1.0.4’