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

R语言如何筛选数据框中V6列值恰好出现2次的行

R语言实现:筛选V6列取值恰好出现2次的所有行

原有代码失效原因

之前写的duplicated(V6)逻辑存在缺陷:这个函数只会标记重复值里非第一次出现的行,既不会统计每个取值的总出现次数,还会漏掉重复取值对应的第一行,无法满足“取值恰好出现2次就保留全部对应行”的要求。

可用实现方案

dplyr 方案

如果习惯用tidyverse语法,分组统计每组行数后筛选即可,逻辑最清晰:

library(dplyr)

df <- as.data.frame(date)
# 按V6分组,保留组内恰好2行的所有数据
df1 <- df %>%
  group_by(V6) %>%
  filter(n() == 2) %>%
  ungroup()

如果不想写分组逻辑,也可以用add_count直接生成频次列筛选:

df1 <- df %>%
  add_count(V6) %>%
  filter(n == 2) %>%
  select(-n)

基础R方案

不加载第三方包也能实现,两种写法任选:

  1. 用ave按组计数筛选
df <- as.data.frame(date)
df1 <- df[ave(seq_len(nrow(df)), df$V6, FUN = length) == 2, ]
  1. 用table统计频次后匹配目标值
v6_freq <- table(df$V6)
target_val <- names(v6_freq)[v6_freq == 2]
df1 <- df[df$V6 %in% target_val, ]

示例数据集参考

数据集截图
上述代码运行后,会自动过滤V6列取值出现1次、3次及以上的所有行,仅保留出现恰好2次的取值对应的全部两行结果,和预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:33:19