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

在R中基于X1与name列的变量总计数过滤行

解决方法:筛选X1和name列中值总出现次数≥3的行

你的需求是统计X1和name两列所有值的出现频次,保留那些行中X1或name属于频次≥3的取值的行。之前的代码错误在于按X1,name组合分组,每个组合在原数据里最多只有1行,因此n()始终为1,自然筛选不出结果。

步骤说明

  1. 提取X1和name列的所有值,统一统计每个值的出现次数
  2. 筛选出出现次数≥3的目标值集合
  3. 过滤原数据,保留X1或name属于上述高频值的行

代码实现

library(dplyr)
library(tidyr)

# 原数据集
d <- read.table(text = "
X1    name   var1  var2  var3
A1    A1        0     9     0
A3    A3        0     7     0
A4    A4        0    11     0
A5    A5        0     7     0
A6    A6        0     8     0
D     D         0    11     0
IN    A5        0     0    11
IN    IN        0    11     0 ", header = TRUE)

# 统计X1和name列所有值的出现频次,筛选出频次≥3的值
high_freq_vals <- d %>%
  select(X1, name) %>%
  pivot_longer(cols = everything(), values_to = "val") %>%
  count(val) %>%
  filter(n >= 3) %>%
  pull(val)

# 过滤得到目标结果
result <- d %>%
  filter(X1 %in% high_freq_vals | name %in% high_freq_vals)

print(result)

输出结果

X1 name var1 var2 var3
1 A5   A5    0    7    0
2 IN   A5    0    0   11
3 IN   IN    0   11    0

代码解释

  • 用pivot_longer将X1和name列转换为长格式,实现对两列所有值的统一统计
  • count(val)计算每个值的总出现次数,筛选出频次≥3的取值存入high_freq_vals
  • 最后通过filter保留原数据中X1或name属于高频值集合的行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:42:12