r - 如何根据一列的数量按组减少行数?
问题描述
我想根据“计数”列中分配的数字按组(“组”列)从我的数据框中剪切行。
数据看起来像这样
Group Count Result Result 2
<chr> <dbl> <dbl> <dbl>
1 Ane 3 5 NA
2 Ane 3 6 5
3 Ane 3 4 5
4 Ane 3 8 5
5 Ane 3 7 8
6 John 2 9 NA
7 John 2 2 NA
8 John 2 4 2
9 John 2 3 2
预期成绩
Group Count Result Result 2
<chr> <dbl> <dbl> <dbl>
1 Ane 3 5 NA
2 Ane 3 6 5
3 Ane 3 4 5
6 John 2 9 NA
7 John 2 2 NA
谢谢!
解决方案
我们可以在按'Group'分组后使用'Count'slice
的值first
library(dplyr)
df1 %>%
group_by(Group) %>%
slice(seq_len(first(Count))) %>%
ungroup
-输出
# A tibble: 5 × 4
Group Count Result Result2
<chr> <int> <int> <int>
1 Ane 3 5 NA
2 Ane 3 6 5
3 Ane 3 4 5
4 John 2 9 NA
5 John 2 2 NA
或者使用filter
withrow_number()
创建一个逻辑向量
df1 %>%
group_by(Group) %>%
filter(row_number() <= Count) %>%
ungroup
数据
df1 <- structure(list(Group = c("Ane", "Ane", "Ane", "Ane", "Ane", "John",
"John", "John", "John"), Count = c(3L, 3L, 3L, 3L, 3L, 2L, 2L,
2L, 2L), Result = c(5L, 6L, 4L, 8L, 7L, 9L, 2L, 4L, 3L), Result2 = c(NA,
5L, 5L, 5L, 8L, NA, NA, 2L, 2L)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9"))
推荐阅读
- laravel - 中间件中的 Null Auth 用户
- outlook-redemption - 读取创建日期和接收日期的兑换错误
- python - 如何在谷歌云调度程序(Python)中定义的谷歌云函数中使用主体参数?
- arrays - 跨 MS Excel 工作表的 if 语句
- recaptcha - 如何修复未捕获的错误:站点密钥无效或未从 reCaptcha 加载到 api.js 中
- reactjs - 如何在 React Native 中仅使用 FlatList 或 VirtualizedList 渲染第一项
- typescript - 基于嵌套属性创建联合类型
- jmeter - JMeter - 从单个控制台执行多个测试计划
- hibernate - JoinColumn 注释在同一张表上创建列
- python - 获取python子进程运行时间