如何使用Base R查找DataFrame中分组后列值全一致的唯一行
Base R 实现代码
# 筛选满足条件的水果名:对应所有adj取值完全相同 valid_fruits <- names(which(tapply(df.start$adj, df.start$fruit.names, function(x) length(unique(x)) == 1))) # 提取符合条件的行并去重得到结果 df.results <- unique(df.start[df.start$fruit.names %in% valid_fruits, ]) # 可选:重置行号,和预期输出格式完全一致 rownames(df.results) <- NULL
逻辑说明
- 用
tapply()按fruit.names分组,统计每组内adj的唯一值数量,判断是否仅存在1种唯一值,即该组所有adj取值完全相同 - 提取符合条件的水果名后,从原数据中筛选对应行,再用
unique()去重,最终得到每个符合条件的水果仅保留一行的结果
运行验证
输出结果与预期完全一致:
> df.results fruit.names adj 1 apple red 2 pepper hot
内容的提问来源于stack exchange,提问作者JamesR
相关产品推荐
相关产品推荐

