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

如何筛选数据框中不含0或17的行并生成新数据框

解决方法

给定的原始数据框定义如下:

df <- structure(list(id = c(1, 2, 3), date1 = c(13, 9, 0), date2 = c(17L, 
13L, 17L)), row.names = c(NA, -3L), class = "data.frame")

我们需要筛选出排除id列后,行内存在0或17以外数值的行,以下是两种可行的实现方式:

方式一:Base R原生代码

# 提取需要检查的列(去掉id列)
target_cols <- df[, !names(df) %in% "id"]
# 逐行判断:是否有值不在{0,17}这个集合里
should_keep <- apply(target_cols, 1, function(r) any(!r %in% c(0, 17)))
# 筛选符合条件的行
new_df <- df[should_keep, ]

运行后new_df就是预期的结果:

id date1 date2
1  1    13    17
2  2     9    13

方式二:tidyverse(dplyr)语法

如果平时用tidyverse工具链,代码会更简洁直观:

library(dplyr)

new_df <- df %>%
  filter(if_all(-id, ~ .x %in% c(0, 17)) == FALSE)

或者用逐行判断的写法:

new_df <- df %>%
  rowwise() %>%
  filter(any(c_across(-id) != 0 & c_across(-id) != 17)) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:30:45