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

如何删除number列中唯一值出现次数少于指定次数的行?

过滤tibble中出现次数达标行

首先构造示例数据:

library(tibble)
df <- tibble(
  number = c(1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5)
)

方法1:分组后直接过滤(推荐)

使用dplyr包的分组与过滤功能,通过n()获取每组的行数,筛选出行数达标的组:

library(dplyr)

# 保留number出现次数≥5的行
df_filtered_5 <- df %>%
  group_by(number) %>%
  filter(n() >= 5) %>%
  ungroup()

执行后结果:

# A tibble: 5 × 1
  number
   <dbl>
1      5
2      5
3      5
4      5
5      5
# 保留number出现次数≥4的行
df_filtered_4 <- df %>%
  group_by(number) %>%
  filter(n() >= 4) %>%
  ungroup()

执行后结果:

# A tibble: 9 × 1
  number
   <dbl>
1      4
2      4
3      4
4      4
5      5
6      5
7      5
8      5
9      5

方法2:添加计数变量后过滤

先为每个number添加出现次数的列,再基于该列过滤:

# 添加计数列
df_with_count <- df %>%
  add_count(number, name = "count_number")

# 过滤次数≥5的行(可选删除计数列)
df_filtered_5_v2 <- df_with_count %>%
  filter(count_number >= 5) %>%
  select(-count_number)

# 过滤次数≥4的行
df_filtered_4_v2 <- df_with_count %>%
  filter(count_number >= 4) %>%
  select(-count_number)

基础R实现(无需dplyr)

如果不想加载第三方包,可使用基础R的table()统计次数后过滤:

# 统计每个number的出现次数
counts <- table(df$number)

# 筛选保留的number值
keep_vals_5 <- names(counts[counts >= 5])
keep_vals_4 <- names(counts[counts >= 4])

# 过滤数据
df_filtered_5_base <- df[df$number %in% keep_vals_5, ]
df_filtered_4_base <- df[df$number %in% keep_vals_4, ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:25:38