Evan の Logbook
✨ Updates
🎨 Style Guide
🧠 Creative Resources
🗒️ Mind Notes
🧭 Knowbase
📘 SOPs
🩺 Medical Research
🛠️ Tech Chronicles
💰 Fortune Blueprint
📈 R Visionary
📊 Statistics
🖼️ BioVis
⚡.by:轻量级分组操作的新方式
type
status
date
slug
summary
tags
category
icon
password
comment
从
dplyr 1.1.0 起,你可以在 summarise()、mutate()、filter() 等函数中用 .by 参数,一行完成分组 + 计算,不再需要先写 group_by(),也无需再手动 ungroup()。1. 为什么用 .by
- 省去
group_by()/ungroup(),让管道更简洁
- 直接在目标函数内指定分组,意图更直观
- 默认不保留分组结构,后续操作回归全局数据
2. 函数原型
.by可传单列名,也可传向量c(col1, col2)
- 等价于:
3. 示例数据
4. 核心用法示例
4.1 .by + summarise()
按
group 计算组内平均,结果不保留分组结构:group | mean_score |
A | 11 |
B | 14.5 |
C | 13 |
4.2 .by + mutate()
按
group 计算组均值并新增列:效果:
df 中每行多了一列 group_mean,值为对应分组的平均分。4.3 多列分组
同时按
(group, gender) 分组计算:效果:得到每个
(group, gender) 的平均分,分组更细。4.4 .by + filter()
按组筛选:例如保留每组分数大于组均值的行:
5. 小贴士
- 链式阅读:把分组逻辑直接写在操作函数中,减少管道层级
- 无分组残留:无需再写
ungroup(),避免分组影响后续步骤
- 可用于所有分组敏感函数:
summarise()、mutate()、filter()、甚至arrange()
- 适合一次性、临时分组计算:当不需要后续继续分组时,首选
.by
总结.by让你的分组计算更简洁、直观,无需再写group_by()/ungroup()。在日常数据分析中,凡是“一次性”的聚合、变换或筛选,都可以优先考虑使用.by!
Prev
pivot_longer():宽转长(wide → long)
Next
ungroup():取消分组结构
Loading...
YouTube 使用笔记