首页 > 解决方案 > 如何在 R 中手动对列出的数据框列中的级别进行排序?

问题描述

我有三个数据框,类似于:

    Value Time Colour  Fruit 
1    9.0    1  Orange  Apple 
2    9.5    2  Orange  Apple 
3   10.0    1  Red     Apple 
4    9.0    2  Blue    Apple 
5    9.5    1  Blue    Apple 
6   10.0    2  Blue    Pear
7    1.0    1  Blue    Pear 
8    2.0    2  Red     Pear 
9    3.0    1  Red     Pear 
10   2.0    2  Orange  Pear 
11   1.0    1  Blue    Mango 
12   3.0    2  Blue    Mango
13   2.0    2  Red     Mango
14   3.0    1  Red     Mango
15   2.0    2  Orange  Mango
16   1.0    1  Blue    Banana 
17   3.0    2  Blue    Banana
18   2.0    2  Red     Banana
19   3.0    1  Red     Banana
20   2.0    2  Orange  Banana 

...列在 my_list 中:

my_list<- list(df1=df1, df2=df2, df3=df3)

为了稍后绘制数据(使用 facet_grid 分组条形图),我想重新调整 Fruit 和 Color 的值,就像我可以使用 fct_relevel 对单个数据帧所做的那样:

Data <- Data %>% 
  mutate(Colour = fct_relevel(Colour,"Blue", "Red", "Orange")) %>% 
  mutate(Fruit  = fct_relevel(Fruit, "Apple", "Mango", "Banana", "Pear"))

谢谢你的帮助!

标签: rlistsortinglevels

解决方案


由于您使用的是 dplyr,因此一种方法是使用mapfrom purrr

library(dplyr)
library(purrr)
mylist <- my_list %>% 
  map(~ .x %>%
        mutate(Colour = fct_relevel(Colour,"Blue", "Red", "Orange")) %>%
        mutate(Fruit = fct_relevel(Fruit, "Apple", "Mango", "Banana", "Pear")))

推荐阅读