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

如何筛选名称含Q且仅后跟数字、数据为数值型的列?

筛选列名格式为Q+纯数字且为数值型的列

你之前尝试的两种写法都有局限性:

  • select(matches("[[:digit:]]")) 仅匹配包含数字的列,既没限定列名必须以Q开头,也未筛选数据类型
  • select(starts_with(paste("Q",0:100, sep = ""))) 只能覆盖Q0到Q100的列,无法匹配Q101及以上的情况,同样没有对数据类型做限制

下面是符合需求的解决方案,基于dplyr包实现:

方法一:直接组合正则匹配与类型筛选

library(dplyr)

# 从数据框df中筛选目标列
df %>%
  select(matches("^Q\\d+$"), where(is.numeric))

方法二:分步筛选(更直观)

library(dplyr)

# 第一步:提取所有列名符合Q+纯数字格式的列
qualified_cols <- grep("^Q\\d+$", colnames(df), value = TRUE)

# 第二步:从这些列中筛选数值型列
df %>%
  select(all_of(qualified_cols) & where(is.numeric))

关键部分说明:

  • 正则表达式^Q\\d+$:^锁定列名开头为Q,\\d+匹配一个或多个连续数字,$锁定列名结尾,确保列名严格是Q加纯数字的格式
  • where(is.numeric):专门用来筛选数据类型为数值型的列,确保最终选中的列同时满足格式和类型要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:22:07