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

如何使用dplyr选择列名同时包含'a'和'c'的数据框列?

筛选同时包含'a'和'c'的列的方法

嘿,这个需求很好实现!我给你分享两种常用的R语言方案,不管你用基础R还是tidyverse工具链都能搞定:

基础R实现

先构造和你描述一致的测试数据框,再通过列名匹配完成筛选:

# 创建示例数据框
df <- data.frame(
  sample.data = rep(1, 5),
  a_b_c = rep(2, 5),
  d_b_e = rep(3, 5),
  r_f_g = rep(4, 5),
  c_b_a = rep(1, 5)
)

# 筛选同时包含'a'和'c'的列
selected_df <- df[, grepl("a", colnames(df)) & grepl("c", colnames(df))]

这里grepl("a", colnames(df))会生成一个逻辑向量,标记所有列名含'a'的列;grepl("c", colnames(df))同理标记含'c'的列。用&取交集后,就能精准筛选出同时满足两个条件的列。

tidyverse(dplyr)实现

如果你习惯用dplyr的管道语法,这两种写法更直观:

library(dplyr)

# 写法1:用contains的交集,可读性拉满
selected_df <- df %>% 
  select(contains("a") & contains("c"))

# 写法2:用正则表达式匹配(适合更复杂的规则)
selected_df <- df %>% 
  select(matches("(?=.*a)(?=.*c)", perl = TRUE))

第一种写法里,contains("a")和contains("c")分别筛选含对应字符的列,&直接取交集,新手也能一眼看懂;第二种用了正向预查正则,确保列名同时包含'a'和'c'(顺序不影响)。

两种方法最终都会得到你需要的a_b_c和c_b_a这两列~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:28:24