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

在R中按ID分组判断关联列是否有多个唯一值并生成指示列

错误原因

你代码的核心问题是在mutate内调用了d$product_code,这会直接提取整个原始数据集的product_code列,而非当前分组后的组内数据,所以无论怎么分组,计算的都是全局唯一产品编码的数量,自然得不到预期结果。

正确实现代码

方法1:dplyr的n_distinct实现(更简洁)

library(dplyr)
d <- d %>% 
  group_by(ID) %>%
  mutate(multiple_products = as.integer(n_distinct(product_code) > 1)) %>%
  ungroup()

这里直接用n_distinct()计算每组内唯一product_code的数量,逻辑判断后用as.integer()直接把TRUE/FALSE转为1/0,比if_else更简洁。

方法2:沿用原有逻辑的修正版

如果要保留你原来的length(unique)写法逻辑,只需要去掉d$,直接调用列名即可,这样会读取分组后的组内列数据:

d <- d %>% 
  group_by(ID) %>%
  mutate(multiple_products = if_else(length(unique(product_code)) > 1, 1, 0)) %>%
  ungroup()

最终输出结果

ID product_code multiple_products
1  a          B78                 1
2  a          X31                 1
3  b          C12                 0
4  b          C12                 0

完全符合需求:ID=a有2个唯一产品编码所以标记1,ID=b只有1个所以标记0。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:30:01