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

如何按条件移除包含负值的因子组对应的所有行

筛选所有y值均为正的分组数据

我们需要从生成的数据框中移除所有包含至少一个y值为负的set分组,仅保留所有y值均为正的分组。

测试数据生成代码

set.seed(1)
df <- data.frame(x = rep(c("A","B","C","D","E"), rep = 6),
                 y = rnorm(30, 1, 1),
                 set = rep(c(1:3), each = 10))

df$set <- as.factor(df$set)

解决方案

方法1:使用dplyr包

这是更直观的tidyverse风格写法:

library(dplyr)

filtered_df <- df %>%
  group_by(set) %>%
  filter(all(y > 0)) %>%  # 仅保留组内所有y值都大于0的分组
  ungroup()

方法2:使用基础R(无需额外包)

如果不想加载第三方包,用基础R也可以实现:

# 第一步:筛选出所有y值均为正的set分组
valid_sets <- tapply(df$y, df$set, function(x) all(x > 0))
valid_sets <- names(valid_sets[valid_sets])

# 第二步:提取这些分组的所有行
filtered_df <- df[df$set %in% valid_sets, ]

结果验证

运行上述代码后,查看筛选后的数据:

unique(filtered_df$set)

输出应为[1] 1,说明仅保留了所有y值均为正的Set 1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:27:14