Evan の Logbook
✨ Updates
🎨 Style Guide
🧠 Creative Resources
🗒️ Mind Notes
🧭 Knowbase
📘 SOPs
🩺 Medical Research
🛠️ Tech Chronicles
💰 Fortune Blueprint
📈 R Visionary
📊 Statistics
🖼️ BioVis
🔁pivot_longer():宽转长(wide → long)
type
status
date
slug
summary
tags
category
icon
password
comment
pivot_longer() 是 tidyr 中将多列“压缩”为两列(变量名列 + 值列)的核心函数,它能将数据转换为“tidy 格式”,非常适合后续可视化、建模或汇总分析。1. 函数原型
参数 | 说明 |
data | 输入的宽格式数据框 |
cols | 要“拉长”的列(可用列名、范围、或 select() 语法指定) |
names_to | 新生成的“变量名”列的列名,默认 "name" |
values_to | 新生成的“值”列的列名,默认 "value" |
names_prefix | 去除原列名中的前缀( stringr::str_remove()) |
names_sep | 按分隔符拆分列名,生成多个新列(等同于 names_to = c(...), names_sep = "_") |
names_pattern | 按正则表达式拆分列名(捕获组决定拆分后新列),通常与 names_to = c(...) 配合使用 |
values_drop_na | 是否删除 NA 值的行(默认 FALSE:保留所有组合) |
2. 基础示例
示例数据
2.1 将 gene_A 和 gene_B 拉长
输出
id | gene | expression |
1 | gene_A | 10 |
1 | gene_B | 15 |
2 | gene_A | 20 |
… | … | … |
3. 辅助选择
利用
select() 语法,快速选择一组列:4. 列名拆分
当列名中蕴含多个信息时,可拆分为多列:
输出
id | type | replicate | value |
1 | A | 1 | 5 |
1 | A | 2 | 7 |
1 | B | 1 | 9 |
… | … | … | … |
5. 正则拆分
使用正则捕获组更灵活:
6. 去除缺失值
当部分组合不存在时,可删除
NA 行:7. 使用建议
- 可视化前:将宽表拉成长表后,便可直接用
ggplot(aes(color = gene)) + geom_line(aes(x = id, y = expression))
- 模型输入:许多建模工具都要求“长格式”或“一行一观测”
- 分组拆分:结合
names_sep/names_pattern,快速从列名提取元信息
- 与
pivot_wider()对应:二者配合,可在多表连接和数据 reshape 间自由切换
总结pivot_longer()是实现“tidy data” 的重要一环。无论是简单合并多列,还是复杂拆分列名,它都能让数据变得整洁,后续分析流程更顺畅!
Prev
parse_number():提取字符串中的数字
Next
.by:轻量级分组操作的新方式
Loading...
YouTube 使用笔记