-2

I have the following 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         CP012381 16
11         CP016827 17
12              One 3
13      One_plasmid 4
14              Two 5
15      Two_plasmid 6
16            Three 1
17    Three_plasmid 2

Now I want to have the order according to the column "Order". Also the levels of "Accession" have to have this level-order...

lmo
  • 37,904
  • 9
  • 56
  • 69
Michael
  • 706
  • 9
  • 29

1 Answers1

1

We just need to use order

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

Or using tidyverse

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

Or using data.table

library(data.table)
setDT(df1)[order(Order)][, Accession := actor(Accession, levels = unique(Accession))]
akrun
  • 874,273
  • 37
  • 540
  • 662