Evan の Logbook
✨ Updates
🎨 Style Guide
🧠 Creative Resources
🗒️ Mind Notes
🧭 Knowbase
📘 SOPs
🩺 Medical Research
🛠️ Tech Chronicles
💰 Fortune Blueprint
📈 R Visionary
📊 Statistics
🖼️ BioVis
分类变量处理 - forcats
type
status
date
slug
summary
tags
category
icon
password
comment
在 R 中,factor 是表示分类变量(categorical variable)的基础数据类型。
虽然
factor() 可以创建因子,但在实际数据分析中,我们经常需要对因子进行:- 排序(改变绘图或分析的顺序)
- 重命名(让类别标签更直观)
- 合并(减少稀有类别)
- 删除(去掉未使用的 levels)
- 重新编码(方便分析与可视化)
原生 R 语法可以完成这些任务,但通常较繁琐且可读性差。
forcats 是 tidyverse 生态中的因子处理工具包,它提供了一套以 fct_ 开头的函数,语义清晰、风格统一、可与 dplyr、ggplot2 无缝配合。📦 核心函数速查表
函数名 | 用途说明 | 常见场景 |
fct_inorder() | 按因子首次出现顺序创建 levels | 保留原始顺序绘图 |
fct_infreq() | 按频率降序排列 levels | 条形图按频率排序 |
fct_relevel() | 手动调整因子水平顺序 | 把关键类别放前面 |
fct_rev() | 反转 levels 顺序 | 翻转坐标轴显示 |
fct_drop() | 删除未使用的 levels | 清理多余类别 |
fct_lump() | 聚合低频因子为 "Other" | 压缩稀有类别 |
fct_recode() | 重命名 levels(类似 rename()) | 改标签 |
fct_collapse() | 多个 levels 合并为一个新组 | 归类 |
fct_count() | 统计每个 level 频数(类似 count()) | 快速检查类别分布 |
fct_match() | 检查因子是否包含特定水平 | 数据验证 |
✨ 详细使用场景与示例
1️⃣ 创建分类变量
fct_inorder() 会根据数据首次出现的顺序来设定 levels,非常适合保留原始顺序绘图。
2️⃣ 重排序水平
重排序对 ggplot2 特别重要,可直接影响 x 轴或 y 轴类别的排列。
3️⃣ 按频率排序(常用于绘图)
频率高的类别会排在前面,绘制条形图时非常直观。
4️⃣ 聚合低频类别
n 可以指定保留的类别数量,或者用 prop 保留占比。
5️⃣ 删除未使用的 levels
清理数据后很实用,避免无意义的空类别干扰分析。
6️⃣ 重命名 & 合并组别
fct_recode() 适合简单重命名,fct_collapse() 则适合大规模合并。
💡 总结
forcats让因子处理更直观、可读性高、代码更短。
- 与
dplyr和ggplot2配合时,特别适合用在mutate()或绘图的美学映射中。
- 如果你在做分类变量的整理、排序、清理、合并,
forcats是必备工具。
Prev
ISO 8601 国际时间标准
Next
separate_wider_position():按固定宽度横向拆分为多列
Loading...
YouTube 使用笔记