You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用dplyr基于双变量条件删除R数据框指定行?

问题原因分析

你原来的filter条件逻辑组合错误,导致所有day=157的行都被过滤。核心问题在于:

  • 在dplyr::filter()中,逗号代表逻辑与(AND),你的代码等价于要求同时满足:
    !id==166 & !day==157 且 !id==206 & !day==157 且 !id==210 & !day==157
  • 只要day=157,!day==157就为FALSE,整个条件链直接不成立,因此所有day=157的行都被排除了。
正确写法

我们需要排除的是**同时满足day=157且id属于{166,206,210}**的行,直接对这个复合条件取反即可:

df %>%
  filter(!(day == 157 & id %in% c(166, 206, 210)))

也可以用逻辑或的等价写法(可读性稍弱):

df %>%
  filter(day != 157 | !(id %in% c(166, 206, 210)))
验证结果

运行正确代码后,day=157中仅id为166、206、210的3行被删除,其余6行(id=149、188、224、151、186、226)会保留,最终结果共24行。

内容的提问来源于stack exchange,提问作者Marta Román

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 23:47:36