R语言如何筛选x、z、m列相同但y列不同的所有对应行
R 实现分组筛选方案
核心逻辑:先按x、z、m三列分组,筛选出组内y列唯一值数量大于1的分组,再保留这些分组的全部行。
方法1:使用dplyr包(tidyverse风格,常用易读)
library(dplyr) result <- df %>% group_by(x, z, m) %>% filter(n_distinct(y) > 1) %>% ungroup() # 验证输出 print(result)
输出结果和你给出的目标df[6:7,]完全一致。
方法2:Base R 实现(无需安装额外依赖包)
result <- df[as.logical(ave(df$y, df$x, df$z, df$m, FUN = function(col) length(unique(col)) > 1)), ]
方法3:data.table 实现(适合处理大数据量场景)
library(data.table) setDT(df) result <- df[, .SD[uniqueN(y) > 1], by = .(x, z, m)]
内容的提问来源于stack exchange,提问作者Indescribled
相关产品推荐
相关产品推荐

