按R中的索引对tibble进行排序

时间:2016-12-29 16:53:28

标签: r dplyr

希望按R中的索引对tibble进行排序。任何方法都可以在不使用反向序列的情况下执行此操作吗?

library(tibble)
library(dplyr)

    options(tibble.width = Inf)
    options(dplyr.print_max = Inf) 

返回尾部进行比较......

iris %>% tail
# Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
# 145          6.7         3.3          5.7         2.5 virginica
# 146          6.7         3.0          5.2         2.3 virginica
# 147          6.3         2.5          5.0         1.9 virginica
# 148          6.5         3.0          5.2         2.0 virginica
# 149          6.2         3.4          5.4         2.3 virginica
# 150          5.9         3.0          5.1         1.8 virginica

(tibbleIris <- as_tibble(iris))

可以按反向顺序排序,但不是索引......

tibbleIris[nrow(tibbleIris):1,] # Sorts in reverse order
# # A tibble: 150 × 5
# Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
# <dbl>       <dbl>        <dbl>       <dbl>     <fctr>
#   1            5.9         3.0          5.1         1.8  virginica
# 2            6.2         3.4          5.4         2.3  virginica
# 3            6.5         3.0          5.2         2.0  virginica
# 4            6.3         2.5          5.0         1.9  virginica
# 5            6.7         3.0          5.2         2.3  virginica
# 6            6.7         3.3          5.7         2.5  virginica


tibbleIris %>% arrange(-index)
# Error: object 'index' not found

1 个答案:

答案 0 :(得分:2)

仍然不确定你的意思:这似乎有效:

iris %>% as_tibble %>% arrange(desc(as.numeric(rownames(iris))))

(为简单起见,我省略了tibbleIris的中间分配)。使用rownames相当unid-tidyverse-ish,所以我可能会建议设置一个显式的索引变量......

iris %>% as_tibble %>% mutate(index=seq(n())) %>% 
      arrange(desc(index))