如何使用tidyverse筛选R数据框中某列恰好含两个单词的行
实现方法
你可以直接用tidyverse生态里stringr包的str_count()函数搭配filter()实现,统计物种名列的单词数量后筛选等于2的行即可,完整代码如下:
# 加载tidyverse library(tidyverse) # 筛选行 df_result <- df %>% filter(str_count(sp_name, "\\b\\w+\\b") == 2)
代码说明
str_count()用于统计字符串中匹配指定规则的内容次数,这里的正则表达式\\b\\w+\\b会匹配完整的独立单词,避免前后空格、多空格分隔的异常情况影响统计结果- 如果你的数据里物种名都是单个空格分隔、没有前后多余空格,也可以简化写法:
df_result <- df %>% filter(str_count(sp_name, " ") == 1)
运行后得到的结果就是你需要的恰好两个单词的行:
> df_result sp_name value 1 Xylopia brasiliensis 1 2 Xylosma tweediana 2
内容的提问来源于stack exchange,提问作者hiperhiper
相关产品推荐
相关产品推荐

