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

如何在R语言中按ID提取color列唯一值并添加计数列?

按ID保留唯一颜色并添加颜色计数的R实现方案

原始数据集

ID <- c(1,1,1,1,1,1,1,2,2,2,2,2)
color <- c("red","red","red","blue","green","green","blue",
           "yellow","red","red","blue","green")
df <- data.frame(ID,color)

解决方案一:基于dplyr的链式操作

直接通过分组去重+分组赋值完成需求,代码简洁高效:

library(dplyr)

df_result <- df %>%
  # 按ID+color分组,仅保留每组首行实现去重
  group_by(ID, color) %>%
  slice(1) %>%
  ungroup() %>%
  # 按ID分组,计算当前ID的唯一颜色总数并赋值给n_color
  group_by(ID) %>%
  mutate(n_color = n_distinct(color)) %>%
  ungroup() %>%
  # 按ID排序匹配目标格式
  arrange(ID)

解决方案二:先统计计数再关联去重数据

如果更习惯分步操作,可以拆分统计和关联两步:

library(dplyr)

# 第一步:统计每个ID对应的唯一颜色数量
color_count <- df %>%
  group_by(ID) %>%
  summarize(n_color = n_distinct(color)) %>%
  ungroup()

# 第二步:对原始数据去重后关联计数表
df_result <- df %>%
  # 保留ID+color的唯一组合
  distinct(ID, color, .keep_all = TRUE) %>%
  # 关联计数表添加n_color列
  left_join(color_count, by = "ID") %>%
  arrange(ID)

验证结果

运行上述代码后,df_result将完全匹配目标数据集:

print(df_result)
#   ID  color n_color
# 1  1    red       3
# 2  1   blue       3
# 3  1  green       3
# 4  2 yellow       4
# 5  2    red       4
# 6  2   blue       4
# 7  2  green       4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:47:31