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

R语言如何筛选data.frame中V6列值恰好出现2次的行

R语言筛选data.frame中V6列取值恰好出现2次的所有行

示例数据参考

原有代码逻辑缺陷

duplicated(V6)仅会标记V6列中非首次出现的重复值,既无法统计每个取值的总出现频次,也会漏掉每个重复值第一次出现的行,无法满足“取值恰好出现2次时保留全部对应行”的筛选要求。

可直接运行的实现方案

方案1:dplyr 写法(适配你已加载的包)

两种写法逻辑一致,都是先按V6分组统计每个值的出现次数,再保留次数等于2的行:

library(dplyr)

df <- as.data.frame(date)

# 写法1:add_count 快速添加频数列
df1 <- df %>%
  add_count(V6, name = "freq") %>%
  filter(freq == 2) %>%
  select(-freq) # 移除临时生成的频数列即可

# 写法2:group_by + filter 直接分组判断
df1 <- df %>%
  group_by(V6) %>%
  filter(n() == 2) %>%
  ungroup()

方案2:Base R 写法(无需加载第三方包)

用R基础自带的table()函数统计频次,再做匹配筛选即可:

# 提取所有恰好出现2次的V6取值
target_values <- names(which(table(df$V6) == 2))
# 子集筛选对应行
df1 <- df[df$V6 %in% target_values, ]

内容的提问来源于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 02:54:21