r - 如何使用 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)
解决方案
你可以试试这个代码 -
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_names
ie中指定的顺序c("S", "M", "E")
推荐阅读
- python - 在子图中绘制网格 Python matplotlib
- php - 化脓字符的新行
- symfony - 表单提交后我应该在哪里放置更新 sql 操作(Symfony / Sylius)
- java - 在集成测试之前运行主 springboot 应用程序
- javascript - 两种方式的数据绑定不适用于淘汰 ObservableArrays
- redis - redis - 按模式/前缀获取所有哈希
- python - 确定最高价值的变量并使用 python random 打印变量的名称
- css - mat-input 和 mat-form-field 的 CSS 问题
- r - 这种类型的情节可以用ggplot2完成吗?
- php - 在表单的标签中显示搜索到的数据