r - 使用 dplyr R 删除在超过“n”个时间点具有零值的 ID
问题描述
我的数据框看起来像这样
value <- c(0,0.1,0.2,0.4,0,0.05,0.05,0.5,0.20,0.40,0.50,0.60)
time <- c(0,0,0,0,1,1,1,1,2,2,2,2)
ID <- c(1,2,3,4,1,2,3,4,1,2,3,4)
test <- data.frame(value, time, ID)
test
value time ID
1 0.00 0 1
2 0.10 0 2
3 0.20 0 3
4 0.40 0 4
5 0.00 1 1
6 0.05 1 2
7 0.05 1 3
8 0.50 1 4
9 0.20 2 1
10 0.40 2 2
11 0.50 2 3
12 0.60 2 4
我想删除值==0 大于或等于两个时间点的所有 ID 我希望我的数据框看起来像这样,(删除具有两个时间点值 = 0 的 ID=1)
2 0.10 0 2
3 0.20 0 3
4 0.40 0 4
6 0.05 1 2
7 0.05 1 3
8 0.50 1 4
10 0.40 2 2
11 0.50 2 3
12 0.60 2 4
解决方案
我们可以filter
通过获取表达式的计数来使用逻辑条件,value == 0
然后sum
将其转换为小于 2 的逻辑条件(在按“ID”分组后)
library(dplyr)
test %>%
group_by(ID) %>%
filter(sum(value == 0) <2)
推荐阅读
- ios - 在 iPad 上使用 window.overrideUserInterfaceStyle 时未启用/禁用暗模式
- laravel-5 - 如何使用页面和过滤器选项制作 Route::resource?
- python-3.x - 命令出错,退出状态为 1:python setup.py egg_info 检查日志以获取完整的命令输出。** 在安装 gumpy 时
- aws-cdk - 在其他堆栈中使用部署操作创建 CodePipeline 时“将创建循环引用”
- javascript - 我的组件未显示在索引页面中
- python-3.x - 在 matplotlib 中的垂直跨越区域上悬停时显示标签
- python - Django Rest Framework ListSerializer 部分更新
- php - 有没有一种简单的方法(在 PhpStorm 中)在 PHPDoc 中包装 PHP 代码片段?
- jquery - 使用 jquery 查找第一个或第二个可用(可见)选择选项
- docker - 将 dockerized Web 应用程序部署到封闭系统中