forcats包是tidyverse生态中的一个,所以直接加载tidyverse就好了哈
library(tidyverse)
rm(list = ls())
options(stringsAsFactors = T)
#构建因子,默认按照字母顺序
months <- c("Dec","Apr","Jan","Mar")
months <- factor(months);months
因子默认按照字母顺序
#设定因子水平
month_levels <- c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
months1 <- factor(months, levels = month_levels)
months1
可手动设定因子水平
#不在你顺序中的值变成NA
x1 <- c("Apr","Mar","Jan","Dee")
factor(x1, levels = month_levels)
因子是已经分类变量的集合体
#按照因子第一次出现的顺序构建水平
months %>% factor() %>% fct_inorder()
按照第一次出现的顺序排序因子水平
f <- factor(c("a", "b", "c", "d"),
levels = c("b", "c", "d", "a"))
## 把c,d放在地第1位,第2位
fct_relevel(f, c("c", "d"))
fct_relevel默认吧后面参数的水平放在最前面
# 把`a`放到最后的位置
fct_relevel(f, "a", after = Inf)
after参数可以设定在谁后面
## 按照某个函数重新排序
f<- fct_relevel(f, sort);f
sort默认从低到高
## 反转顺序
fct_relevel(f, rev)
与原顺序相反
网友评论