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

在R中如何基于多条件自动删除数据框(data frame)中的指定行?

R 按分组条件筛选数据框行的实现方法

完全可以实现该需求,核心逻辑是按Number分组后,优先保留Value为TRUE的行,无TRUE时随机保留1行即可,以下是两种常用实现方案:


方案1:tidyverse(dplyr)实现(代码可读性最高)

先构造示例数据方便验证效果:

library(dplyr)
# 构造示例数据
df <- tibble(
  Number = rep(1:5, each = 2),
  Value = c(TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE)
)

处理代码:

result <- df %>%
  group_by(Number) %>%
  # 按Value降序排列,TRUE会自动排在FALSE前面
  arrange(desc(Value), .by_group = TRUE) %>%
  # 取每组第一行即可
  slice(1) %>%
  ungroup()

逻辑说明:如果组内存在Value=TRUE的记录,排序后会排在第一位,slice(1)就会保留该行;如果组内全为FALSE,则随机保留排序后的第一行,完全符合需求


方案2:Base R 实现(无需加载第三方包)

# 先按Number升序、Value降序排序
df_sorted <- df[order(df$Number, -df$Value), ]
# 按Number去重,保留第一次出现的行
result <- df_sorted[!duplicated(df_sorted$Number), ]

两种方案最终输出的结果都是每个Number对应唯一1行,满足要求。


内容的提问来源于stack exchange,提问作者Noah Friesen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:45:02