如何在R中根据指定列的单词数量删除dataframe中的对应行
R按列的单词数量筛选数据框方案
以下是两种可直接运行的实现方式,均可匹配需求保留id列含2个单词的行:
方法1:基础R实现(无需第三方包)
核心逻辑通过判断字符串中是否存在空格完成筛选(适配你明确的列内仅存在1/2个单词的场景):
# 示例数据 df <- data.frame(id = c("one one","one two","one","two one","two","two one"), data = seq(1:6)) # 基础筛选:直接匹配空格 result <- df[grepl(" ", df$id), ] # 兼容首尾空格的稳妥写法(避免首尾多余空格导致误判) # result <- df[grepl(" ", trimws(df$id)), ]
运行后result将自动保留你需要的第1、2、4、6行。
方法2:tidyverse生态实现(可读性更高)
如果项目使用tidyverse工具链,可直接统计单词数完成筛选,适配多空格分隔、首尾带空格等异常格式场景:
library(dplyr) library(stringr) result <- df %>% # 统计非空格连续字符的数量,保留等于2的行 filter(str_count(id, "\\S+") == 2)
内容的提问来源于stack exchange,提问作者kim1801
相关产品推荐
相关产品推荐

