Перестановка столбца (нисходящий / восходящий) с dplyr без предшествующего вектора - PullRequest
0 голосов
/ 30 мая 2018

Следующий код может переставлять столбцы, если кто-то заранее знает, какие столбцы доступны, но что если кто-то захочет переставить столбцы в порядке убывания / возрастания?В 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 голосов
/ 30 мая 2018

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(.)))
...