在R语言中筛选data.frame里Nm相同但Descr不同的行
筛选Nm列值相同但Descr列值不同的行
下面提供两种R语言的实现方法,均能得到你需要的结果:
方法1:使用dplyr(tidyverse工具集)
这是直观易读的实现方式,适合熟悉tidyverse语法的用户:
library(dplyr) # 执行筛选逻辑 desired_result <- DATA %>% group_by(Nm) %>% # 仅保留Descr存在多个不同值的Nm分组 filter(n_distinct(Descr) > 1) %>% ungroup() # 查看结果 print(desired_result)
运行后输出结果与Desired_output完全一致:
# A tibble: 4 × 3 Cd Nm Descr <int> <chr> <chr> 1 710 spa Castilian 2 4260 spa Spanish 3 2290 gr Greek 4 1213 gr Greek_b
方法2:使用基础R(无需额外安装包)
如果不想依赖第三方包,可以用基础R的ave函数完成需求:
# 计算每个Nm分组中Descr的唯一值数量 group_descr_unique_count <- ave( x = as.integer(factor(DATA$Descr)), by = DATA$Nm, FUN = function(x) length(unique(x)) ) # 筛选出分组内唯一Descr数量大于1的行 desired_result <- DATA[group_descr_unique_count > 1, ] # 查看结果 print(desired_result)
输出结果同样符合要求:
Cd Nm Descr 1 710 spa Castilian 2 4260 spa Spanish 3 2290 gr Greek 4 1213 gr Greek_b
内容的提问来源于stack exchange,提问作者Simon Harmel
相关产品推荐
相关产品推荐

