Evan の Logbook
✨ Updates
🎨 Style Guide
🧠 Creative Resources
🗒️ Mind Notes
🧭 Knowbase
📘 SOPs
🩺 Medical Research
🛠️ Tech Chronicles
💰 Fortune Blueprint
📈 R Visionary
📊 Statistics
🖼️ BioVis
✂️slice() 系列函数:按位置切片提取行
type
status
date
slug
summary
tags
category
icon
password
comment
slice_*() 系列是 dplyr 提供的行切片工具,专注于按行号或规则提取数据框中的行。常用于“取前 N 条”“取组内最大/最小”“随机抽样”等场景,功能比单纯的 filter() 更灵活。1. 函数概览
函数 | 功能说明 |
slice(data, 1:5) | 按 行号 提取指定行 |
slice_head() | 提取每组的前 n 行(默认 n = 1) |
slice_tail() | 提取每组的后 n 行(默认 n = 1) |
slice_min() | 提取每组中某列的 最小值 所在行 |
slice_max() | 提取每组中某列的 最大值 所在行 |
slice_sample() | 随机抽样行,可设定数量或比例 |
2. 示例数据
3. 典型用法
3.1 按行号切片
提取第 1 至 2 行:
3.2 组内前 N 行
每个
group 取第一条记录:3.3 组内最大值行
按
score 提取每组最高分那行,且 不保留并列:with_ties = TRUE时,会保留所有并列最高行。
3.4 随机抽样
- 每组抽 2 行(若组大小不足会报错或需设置
replace = TRUE):
- 全表按比例抽样(40%):
3.5 组内最小值行
提取每组最低分那行:
4. 使用建议
- 行版
select():slice()系列专注行操作,与select()聚焦列操作形成互补。
- 配合
group_by():针对分组提取前/后/极值记录时,slice_*()比filter(rank(...))更简洁。
- 随机抽样:用于快速制作训练/测试集,或模拟重抽样。
- 缺失行处理:在
slice_head()/slice_tail()中可传prop或使用n_max保证不会超出。
总结通过slice_head()、slice_tail()、slice_min()、slice_max()、slice_sample()等函数,您可以轻松实现各种行级别的提取需求,无论是按位置、极值还是随机,都只需一行代码完成。
Prev
ungroup():取消分组结构
Next
group_by():分组操作的基础
Loading...
YouTube 使用笔记