r - 如果 R 中两个条件的总和小于 X,则删除数据行
问题描述
我正在查看两个海湾中鲸鱼的数量。我的数据结构如下:
| Date |Gulf |Calf |Adult |ALL |
------------------------------
1| 9/09 | G | 2 | 18 | 20
2| 9/09 | S | 1 | 20 | 21
3| 10/09 | G | 5 | 2 | 7
4| 10/09 | S | 3 | 2 | 5
我想使用 R 删除两个海湾上鲸鱼总数为 15 或更少的日期以及具有少于两个小牛的海湾。此示例中的输出如下所示:
| Date |Gulf |Calf |Adult |ALL |
------------------------------
1| 9/09 | G | 2 | 18 | 20
第 2 行在海湾 S 中的小牛少于 2 头,第 3 行和第 4 行当天总共有 12 头鲸鱼,少于 16 头。我尝试过:
sum <- plyr::ddply(Gs, c("Date", "Gulf"), numcolwise(sum))
morethanone<-(sum %>%
group_by(Date,Gulf) %>%
summarise(Calf=(Calf[Calf > 1]),Date, Gulf))
这段代码消除了少于 2 条鲸鱼的海湾,但随后我的数据按我不想要的日期/海湾求和。我还必须弄清楚如何摆脱两个海湾上鲸鱼总数为 15 或更少的日子。
非常感谢您的时间和帮助!
解决方案
基本 R 选项可能使用subset
如下
subset(df,ave(ALL,Date,FUN = min)>15 & Calf >=2)
或者
subset(df,ave(ALL>15,Date,FUN = all) & Calf >=2)
这使
Date Gulf Calf Adult ALL
1 9/09 G 2 18 20
数据
> dput(df)
structure(list(Date = c("9/09", "9/09", "10/09", "10/09"), Gulf = c("G",
"S", "G", "S"), Calf = c(2L, 1L, 5L, 3L), Adult = c(18L, 20L,
2L, 2L), ALL = c(20L, 21L, 7L, 5L)), class = "data.frame", row.names = c("1",
"2", "3", "4"))
推荐阅读
- swift - 检查返回值是否为整数,如果是,则在 Swift 中返回字符串
- julia - 如何在 Julia 中检查项目清单是否完整?
- redhat - Red Hat 的订阅管理器是如何工作的?
- pytorch - 加载操作后 Pytorch GPU 内存增加
- flutter - Flutter/Dart:任何语言的语音到文本(离线和连续)
- azure - 如何防止创建其他 Azure Active Directory 租户/目录?
- isabelle - 如何使用 Isabelle/HOL 证明以下陈述?
- c# - Http PostAsJsonAsync 获取空参数(DTO)
- node.js - 为什么我无法从 JSON 对象中获取一些键值?
- ios - Xcode11 应用程序加载器