r - 在特定行之后过滤数据
问题描述
我有一个这样的数据集:
id type value
1 001 0 1991
2 001 0 1992
3 001 1 1993
4 001 1 1994
5 002 1 1992
6 002 1 1993
7 003 0 1999
8 003 1 2000
9 003 0 2001
我想先在我的数据集上选择类型等于1
.
最终的预期结果应该如下:
id type value
3 001 1 1993
4 001 1 1994
5 002 1 1992
6 002 1 1993
8 003 1 2000
9 003 0 2001
我知道id
首先将其分组。但我不知道下一步该做什么。
有没有人有什么建议?
解决方案
与dplyr
:
library(dplyr)
df %>%
group_by(id) %>%
mutate(sel = cumsum(type)) %>%
filter(sel > 0) %>%
select(id, type, value)
结果:
# A tibble: 6 x 3
# Groups: id [3]
id type value
<int> <int> <int>
1 1 1 1993
2 1 1 1994
3 2 1 1992
4 2 1 1993
5 3 1 2000
6 3 0 2001
以 R 为底:
df[with(df, ave(type, id, FUN = cumsum)) > 0, ]
推荐阅读
- c - 包括 c 程序中的 linux 标头因找不到标头而引发错误
- java - 项目在 Heroku 上运行,但不在本地运行
- java - 整数包装类
- javascript - 我可以为 WebGl 容器静音吗?
- python - 如何在打开窗口时在输出中显示 PySimpleGUI 默认文本
- vue.js - Quasar 框架:引导时重定向不起作用
- asp.net - 在 ASP.NET MVC 中引发了 OnModelCreating 类型的“System.StackOverflowException”异常
- java - 构建失败,缺少“包”关键属性
- javascript - 安全地将可自定义的“跟踪代码”字段添加到 php Web 应用程序
- javascript - 将滚动重置到模式框的顶部并在模式框打开时从主页中删除滚动