使用dplyr重新排列列(降序/升序),而不使用先前的向量

时间:2018-05-30 17:06:48

标签: r dplyr tidyverse

如果有人事先知道哪些列可用,则以下代码可以重新排列列,但是如果想要按desc /升序重新排列列,该怎么办? StackOverflow上有一些类似的帖子,但如果没有事先知道哪些列可用,就不能这样做。

  type value
1  rna     1
2  rna     2
3  rna     3
4  dna    20
5  dna    30


d<- data.frame (type=c("rna","rna","rna"), value = c(1,2,3) )
d2 <- data.frame (type=c("dna","dna"), value = c(20,30) )
df <- rbind (d,d2)


library(dplyr)
df %>%
    group_by(type) %>%
    summarise_all(sum) %>%
    data.frame() %>%
    arrange(desc(value)) %>% # reorder row  
    select_(.dots = c("value","type") ) # reorder column

1 个答案:

答案 0 :(得分:3)

sort(names(.))rev(sort(names(.)))应该有效......

d<- data.frame (type=c("rna","rna","rna"), value = c(1,2,3) )
d2 <- data.frame (type=c("dna","dna"), value = c(20,30) )
df <- rbind (d,d2)


library(dplyr)
df %>%
  group_by(type) %>%
  summarise_all(sum) %>%
  data.frame() %>%
  arrange(desc(value)) %>% # reorder row  
  select(sort(names(.)))