其他
R语言处理因子之forcats包介绍(4)
今天继续学习forcats
包的内容,这是forcats
包介绍系列的第4篇。
增加/删除因子
3.1 fct_expand()
增加因子水平
f <- factor(sample(letters[1:3], 20, replace = TRUE))
f
## [1] c b b a a a b a b b b a a c a c a a a b
## Levels: a b c
fct_expand(f, "d", "e", "f")
## [1] c b b a a a b a b b b a a c a c a a a b
## Levels: a b c d e f
3.2 fct_drop()
删除没用的因子水平
f <- factor(c("a", "b"), levels = c("a", "b", "c"))
f
## [1] a b
## Levels: a b c
fct_drop(f, "c")
## [1] a b
## Levels: a b
3.3 fct_explicit_na()
给 NA
一个水平,确保画图或汇总的时候能用上
f1 <- factor(c("a", "a", NA, NA, "a", "b", NA, "c", "a", "c", "b"))
fct_count(f1)
## # A tibble: 4 x 2
## f n
## <fct> <int>
## 1 a 4
## 2 b 2
## 3 c 2
## 4 <NA> 3
f2 <- fct_explicit_na(f1, na_level = "missing")
fct_count(f2)
## # A tibble: 4 x 2
## f n
## <fct> <int>
## 1 a 4
## 2 b 2
## 3 c 2
## 4 missing 3
3.4 fct_unify()
这个函数是作用于列表的,用于统一列表内的因子水平
fs <- list(factor("a"),
factor("b"),
factor(c("a", "b")))
fct_unify(fs, levels = c("a", "b", "c"))
## [[1]]
## [1] a
## Levels: a b c
##
## [[2]]
## [1] b
## Levels: a b c
##
## [[3]]
## [1] a b
## Levels: a b c
4.1 fct_c()
拼接因子向量
fa <- factor("a")
fb <- factor("b")
fab <- factor(c("a", "b"))
c(fa, fb, fab)
## [1] a b a b
## Levels: a b
fct_c(fa, fb, fab)
## [1] a b a b
## Levels: a b
4.2 fct_cross()
组合因子向量,形成新的因子向量,不是简单的连在一起
fruit <- factor(c("apple", "kiwi", "apple", "apple"))
colour <- factor(c("green", "green", "red", "green"))
eaten <- c("yes", "no", "yes", "no")
fct_cross(fruit, colour)
## [1] apple:green kiwi:green apple:red apple:green
## Levels: apple:green kiwi:green apple:red
fct_cross(fruit, colour, eaten)
## [1] apple:green:yes kiwi:green:no apple:red:yes apple:green:no
## Levels: apple:green:no kiwi:green:no apple:green:yes apple:red:yes
5.1 as_factor()
变成因子向量,和 as.factor()
作用一样,但略有不同
x <- c("a", "z", "g")
as.factor(x) # 会改变顺序
## [1] a z g
## Levels: a g z
as_factor(x) # 还是按照原来的顺序
## [1] a z g
## Levels: a z g
5.2 fct_count()
统计因子个数
f <- factor(sample(letters)[rpois(1000, 10)])
table(f)
## f
## a b d e g h i j k l m n o q r t u v x y
## 13 2 17 1 13 47 10 1 106 28 132 21 97 51 99 43 3 128 1 63
## z
## 124
fct_count(f, sort = T, prop = T) # 计算个数,按顺序排列,并计算比例
## # A tibble: 21 x 3
## f n p
## <fct> <int> <dbl>
## 1 m 132 0.132
## 2 v 128 0.128
## 3 z 124 0.124
## 4 k 106 0.106
## 5 r 99 0.099
## 6 o 97 0.097
## 7 y 63 0.063
## 8 q 51 0.051
## 9 h 47 0.047
## 10 t 43 0.043
## # ... with 11 more rows
5.3 fct_match()
检查是否存在某个因子
table(fct_match(gss_cat$marital, c("Married", "Divorced")))
##
## FALSE TRUE
## 7983 13500
5.4 fct_unique()
每个水平只保留一个因子
f <- factor(letters[rpois(100, 10)])
unique(f)
## [1] i o j n p l k h q e f a m d g b
## Levels: a b d e f g h i j k l m n o p q
fct_unique(f)
## [1] a b d e f g h i j k l m n o p q
## Levels: a b d e f g h i j k l m n o p q
5.5 lvls_reorder()
f <- factor(c("a", "b", "c"))
lvls_reorder(f, 3:1)
## [1] a b c
## Levels: c b a
lvls_revalue(f, c("apple", "banana", "carrot"))
## [1] apple banana carrot
## Levels: apple banana carrot
lvls_expand(f, c("a", "b", "c", "d"))
## [1] a b c
## Levels: a b c d
5.6 lvls_union()
作用于列表
fs <- list(factor("a"), factor("b"), factor(c("a", "b")))
lvls_union(fs)
## [1] "a" "b"
以上就是forcats
包的全部内容,希望大家都能学会,如果有问题,欢迎交流讨论。
以上就是今天的内容,希望对你有帮助哦!欢迎点赞、关注、转发!
有任何问题欢迎评论区留言或直接添加我的微信!
欢迎关注我的公众号:医学和生信笔记
“医学和生信笔记 公众号主要分享:1.医学小知识、肛肠科小知识;2.R语言和Python相关的数据分析、可视化、机器学习等;3.生物信息学学习资料和自己的学习笔记!
往期精彩内容:
超详细的R语言热图之complexheatmap系列1
超详细的R语言热图之complexheatmap系列2
超详细的R语言热图之complexheatmap系列3
在VScode中使用R语言
R语言生信图表学习之网络图