为什么tidyverse的mutate / fct_relevel不仅改变了x-bin位置的数据,还改变了数据?

问题描述

我有一个简单的生物量数据集。在一个框架中,我在处理类别上使用了fct_relevel,将它们在x轴上重新组织为“低,中位数,高”,并仔细检查了我制作另一个框架时的样子。我用于突变的代码是:

CELgra <- basic_ABV %>%
  mutate(range_point = fct_relevel(range_point,'low','median','high')) %>%
  filter(species == "CELgra")

要仔细检查,结果相同,只是减去了mutate功能行。然后我做了一个简单的箱形图:

CELgra_ABV_Box <- ggplot(CELgra,aes(x = range_point,y = ABV)) +
  geom_Boxplot() +
  xlab(NULL)+
  ylab("Total Aboveground Biomass (mg)") +
  theme_bw() 

CELgra_ABV_Box

未突变的框架如下所示:

enter image description here

而变异的框架看起来非常不同...

enter image description here

我不明白为什么要这么做。我错过了mutate()函数中发生了什么事?

解决方法

下载数据集并测试未更改的数据集是否与更改的data.frame不同之后。我无法重现该错误。由于因素已经如预期的那样移动,请注意您拥有的第一个图形high low median然后是low high median,它基本上就是刚刚重新排列的图形,正如我在上面的评论中提到的{{1}中的离群点}以某种方式消失了,这就是图表放大的原因。

median class

library(dplyr)
library(ggplot2)
library(raster)
library(BIOMASS)
library(forcats)
unchanged <- read.csv('https://raw.githubusercontent.com/Glae-Nara/alpine-data-pub/master/Basic%20Responses%20EDIT%2019-08-20.csv')
CELgra <- unchanged %>%
  mutate(range_point = fct_relevel(range_point,'low','median','high')) %>%
  filter(species == "CELgra")

CELgra_ABV_box <- ggplot(CELgra,aes(x = range_point,y = ABV)) +
  geom_boxplot() +
  xlab(NULL)+
  ylab("Total Aboveground Biomass (mg)") +
  theme_bw() 

CELgra_ABV_box