2017-02-03 9 views
-2

У меня есть следующий dataframe:Как изменить порядок уровни

  Accession Order 
1   CP000517 7 
2   CP002081 8 
3   CP002427 9 
4   CP002429 10 
5 CP002430_plasmid 11 
6   CP003799 12 
7   CP009907 13 
8 CP009908_plasmid 14 
9   CP011386 15 
10   CP
11   CP016827 17 
12    One 3 
13  One_plasmid 4 
14    Two 5 
15  Two_plasmid 6 
16   Three 1 
17 Three_plasmid 2 

Теперь я хочу, чтобы иметь порядок в соответствии с колонкой «Order». Кроме того, уровни "Присоединение" должны иметь этот уровень порядка ...

+1

Вобще 'df2 <- df1 [заказ (df1 $ Order),]' – akrun

+0

Пробовал уже, но тогда первый столбец (rownumbers) не изменяется соответственно) – Michael

+0

я обновил с другими методами, которые меняются автоматически. – akrun

ответ

1

Нам просто нужно использовать order

df2 <- df1[order(df1$Order),] 
row.names(df2) <- NULL 
df2$Accession <- factor(df2$Accession, levels = unique(df2$Accession)) 

Или с помощью tidyverse

library(dplyr) 
df1 %>% 
    arrange(Order) %>% 
    mutate(Accession = factor(Accession, levels = unique(Accession))) 

Или с использованием data.table

library(data.table) 
setDT(df1)[order(Order)][, Accession := actor(Accession, levels = unique(Accession))]