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

如何使用通配符按列值筛选R语言data frame匹配数据行

筛选前缀值的实现方案

==是精确匹配运算符,不会识别通配符*,因此studentdata[studentdata$Drink == 'water*',]只会匹配取值完全等于字符串water*的行,无法得到预期的前缀匹配结果。

你可以选择以下任意一种方式实现以water为前缀的行筛选:

  • 基础R无依赖最简写法
    使用内置的startsWith()函数,专门用于判断字符串是否以指定内容开头,不需要写正则:
    studentdata[startsWith(studentdata$Drink, "water"), ]
    
  • 基础R通用正则写法
    使用内置的grepl()函数做正则匹配,正则规则中^代表匹配字符串的起始位置,即可实现前缀匹配,后续如果要调整匹配规则(比如匹配后缀、包含特定关键词)也可以直接修改正则表达式:
    studentdata[grepl("^water", studentdata$Drink), ]
    
  • dplyr 流写法
    如果你日常使用tidyverse生态做数据处理,可以用如下写法:
    library(dplyr)
    
    studentdata |> 
      filter(str_starts(Drink, "water"))
    

小提示:如果Drink列是因子类型,先通过as.character(studentdata$Drink)转成字符型再做匹配即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:09:26