如何在R语言中提取dataframe中win列出现次数超3次的行?
解决方案
针对你的需求,这里提供两种通用的实现方式,无需提前知晓符合条件的win值:
方法一:Base R 原生实现
无需额外安装包,直接用基础函数完成筛选:
# 先获取出现次数超过3次的win值 valid_wins <- names(which(table(df$win) > 3)) # 筛选对应行 new_df <- df[df$win %in% valid_wins, ]
或者更简洁的一行写法:
new_df <- df[df$win %in% names(which(table(df$win) > 3)), ]
方法二:dplyr 包实现(适合大数据框,语法更直观)
如果常用tidyverse工具链,用分组筛选逻辑更清晰:
library(dplyr) new_df <- df %>% group_by(win) %>% filter(n() > 3) %>% # n() 代表当前组的行数 ungroup()
验证结果
运行上述代码后,得到的new_df即为预期输出:
> new_df value win 1 1 1 2 2 1 3 3 1
内容的提问来源于stack exchange,提问作者Marta
相关产品推荐
相关产品推荐

