首页 > 解决方案 > 如何使用 set_name 函数确切知道数据集的正确顺序是什么?

问题描述

最近我用 3 个不同的数据集绘制了一个箱线图。剧情不错。但是当我使用函数 set_names 时,我按以下顺序设置数据:“S”、“M”和“E”,而不是顺序不同。这是代码:

df <- 
  list(df_1v, df_2v, df_3v) %>% 
  set_names(c("S", "M", "E")) %>% 
  map_dfr(bind_rows, .id = "df") %>% 
  pivot_longer(-df)

所以,在这里我设置了我使用的数据帧的顺序,与设置函数 set_names 时的顺序相同。然而,这是情节: 在此处输入图像描述

该图显示了颠倒的顺序:“E”、“M”和“S”。在不查看数据帧的每个值的情况下如何知道数据的顺序是否正确(数据量很大)?有知道确切顺序的功能吗?

只有在你需要它的情况下,这里是箱线图的代码:

ggplot(df)+
  geom_boxplot(aes(x = name, y = value), 
               fill = "blue",
               color = "blue",
               alpha = 0.2,
               notch = T,
               notchwidth = 0.8)+
  facet_wrap(~df, nrow = 1)

标签: rggplot2

解决方案


你可以试试这个代码 -

library(tidyverse)

list(df_1v, df_2v, df_3v) %>% 
  set_names(c("S", "M", "E")) %>% 
  map_dfr(bind_rows, .id = "df") %>% 
  pivot_longer(-df) %>%
  mutate(df = factor(df, unique(df))) %>%
  ggplot() +
  geom_boxplot(aes(x = name, y = value), 
               fill = "blue",
               color = "blue",
               alpha = 0.2,
               notch = T,
               notchwidth = 0.8) +
  facet_wrap(~df, nrow = 1)

图的顺序由数据中因子变量的水平控制。通过使用factor(df, unique(df))级别是根据它们在数据中的出现来分配的,因此我们得到了我们在set_namesie中指定的顺序c("S", "M", "E")


推荐阅读