R语言如何筛选数据框中两列前缀一致的匹配行
R语言实现方案
方法1:基础R实现
无需额外安装第三方包,直接用基础的sub()正则替换函数提取前缀后匹配筛选:
# 提取两列前缀匹配后筛选 result <- df[sub("_.+$", "", df$data) == sub("_group$", "", df$group), ] # 查看结果 print(result)
代码说明:
sub("_.+$", "", df$data):将data列中第一个_及之后的所有内容替换为空,得到_#之前的前缀sub("_group$", "", df$group):将group列末尾的_group替换为空,得到_group之前的前缀- 两者相等的行即为符合要求的行
方法2:tidyverse 简洁实现
如果常用tidyverse生态,可以用dplyr+stringr的组合写法,可读性更高:
library(tidyverse) result <- df %>% filter( # 提取data列前缀 str_remove(data, "_\\d+$") == # 提取group列前缀 str_remove(group, "_group$") ) # 查看结果 print(result)
内容的提问来源于stack exchange,提问作者jkinstack
相关产品推荐
相关产品推荐

