1 min read

`fct_reorder2`函数应用

fct_reorderhelp文件中,对boxplot进行举例,因此这里也将使用箱形图进行举例说明。

boxplot(Sepal.Width ~ Species, data = iris)
boxplot(Sepal.Width ~ fct_reorder(Species, Sepal.Width), data = iris)
boxplot(Sepal.Width ~ fct_reorder(Species, Sepal.Width, .desc = TRUE), data = iris)
library(RODBC)
impala <- odbcConnect("Impala")
sqlQuery(impala, 'select count(1) from opd.mkt_m1104_login_cjf_1')

图表的大小。

jianfeng <- sqlQuery(impala, 'select * from opd.mkt_m1104_login_cjf_1')
library(tidyverse)
jianfeng1 <- jianfeng %>% 
  mutate(
    is_apply = as.factor(is_apply),
    is_apply = fct_relevel(is_apply, '1'),
    is_apply_time = paste(is_apply, marketingtime, sep = '_'),
    is_apply_time = fct_reorder2(is_apply_time, is_apply, marketingtime,  .desc = F)
  ) %>%
  # .[,'is_apply_time'] %>% 
  # str()
  
  ggplot(aes(x = is_apply_time, y = appdis)) +
  geom_boxplot() +
  theme(axis.text.x = element_text(angle = 70, hjust = 1)) +
  xlab('')
jianfeng1
ggsave('jianfeng1.png')

fct_reorder2(f, x, y, fun = last2, ..., .desc = TRUE)的默认格式中, 先对x排序,再对y排序, 因此如果字段为A_B想让A的level优先排序的话,那么应该控制x = By = A。 另外注意,.desc = TRUE这是默认条件,因此要设置成.desc = F

fct_relevel的具体参考例子。

f <- factor(c("a", "b", "c", "d"))
fct_relevel(f)
fct_relevel(f, "c")
fct_relevel(f, "b", "a")