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

如何按多条件筛选行?获取同时含0和NA的NR.分组

筛选value列同时包含0和NA的NR.分组

原始数据

library(tibble)
data <- tibble(NR. = c(1,1,1,2,2,2,3,3,3,4,4,4),
               value = c(NA,NA,4,0,0,NA,0,0,0,NA,NA,0))

需求说明

需要从上述数据中筛选出value列同时包含0和NA的NR.分组,最终目标分组为NR.2和NR.4。

解决方案(使用dplyr)

方法一:分组后直接过滤

library(dplyr)

# 筛选符合条件的分组数据
filtered_data <- data %>%
  group_by(NR.) %>%
  filter(any(value == 0, na.rm = TRUE) & any(is.na(value))) %>%
  ungroup()

# 查看目标分组编号
unique(filtered_data$NR.)
# 输出:[1] 2 4

代码解释:

  • group_by(NR.):按NR.字段对数据分组
  • any(value == 0, na.rm = TRUE):判断组内是否存在0(na.rm = TRUE避免NA干扰判断逻辑)
  • any(is.na(value)):判断组内是否存在NA
  • 两个条件通过&连接,仅保留同时满足的分组

方法二:先标记分组再筛选

如果只需要获取符合条件的分组编号,或想先确认分组状态,可以先生成分组标记表:

# 生成分组状态标记表
group_status <- data %>%
  group_by(NR.) %>%
  summarize(
    has_zero = any(value == 0, na.rm = TRUE),
    has_na = any(is.na(value))
  ) %>%
  filter(has_zero & has_na)

# 从原数据中筛选目标分组
filtered_data <- data %>%
  filter(NR. %in% group_status$NR.)

操作后,filtered_data即为所有符合条件的分组数据,group_status$NR.直接给出目标分组编号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:05:01