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

如何筛选出包含指定向量元素的数据框观测值?

问题描述

我的向量

day <- c("day", "night")

原始数据

观测值第1列第2列
1DayEvening
2EveningMorning
3NightEvening
4MorningNight
5MorningMorning
6NightDay

需求

如何筛选出至少有一列包含我的向量中任一元素的观测值?

期望结果

观测值第1列第2列
1DayMorning
3NightEvening
4MorningNight
6NightDay

数据框定义

df = data.frame(
  obs = c(1:6),
  Column1 = c("Day","Evening","Night","Morning","Morning","Night"),
  Column2 = c("Evening","Morning","Evening","Night","Morning","Day")
)
解决方案

方法1:Base R 实现

注意向量元素是小写,数据中是首字母大写,需要统一大小写后再匹配:

# 统一目标向量的大小写(转为小写)
target <- tolower(day)
# 逐行检查:将每行的两列转为小写后,是否有元素匹配目标向量
match_rows <- apply(df[, c("Column1", "Column2")], 1, function(row) {
  any(tolower(row) %in% target)
})
# 筛选符合条件的行
result_df <- df[match_rows, ]
print(result_df)

方法2:dplyr 包实现(简洁风格)

如果习惯使用tidyverse工具链,可以用dplyr的筛选语法:

library(dplyr)

result_df <- df %>%
  filter(
    tolower(Column1) %in% tolower(day) | 
    tolower(Column2) %in% tolower(day)
  )
print(result_df)

两种方法的核心逻辑一致:先统一文本大小写消除匹配差异,再通过%in%判断元素是否在目标向量中,用|(逻辑或)表示至少一列满足条件,最终得到你需要的筛选结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:20:20