2016-12-29 62 views
-1

想要在R索引中对索引进行排序任何不使用反向序列的方法?按R索引对索引进行排序

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 
+0

你是什么意思'索引'? – bouncyball

+0

'rownames(tibbleIris)'返回索引字符串。例如,想知道是否有一种按rowname整数排序的方法。 – eyeOfTheStorm

+0

由于'index'没有在R中定义,但是您将其定义为'rownames(tibbleIris)',您可以尝试告诉R您的定义...类似于'tibbleIris [order(rownames(tibbleIris))]' – Gregor

回答

2

还没明白你的意思:这似乎工作:

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

(我离开ou为简单起见,中间分配为tibbleIris)。使用rownames是相当un-tidyverse-ish,所以我可能会建议设置一个明确的索引变量,而不是...

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

好问题[现在删除:“是否有一个参考文件定义了非反向 - ishness?”]大概是韦翰的书。我从骰子不允许设置rownames的事实中收集了这个特定的想法,例如, https://github.com/tidyverse/tibble/issues/114 –

+1

谢谢......我向谷歌(我应该问之前)提出了全面的反应,并将R提升为数据科学。这似乎是一个安全的赌注。附: “un-tidyverse-ishness”当然是不整洁的 – bouncyball