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

如何按姓名分组将种族变量重编码为多种族类别

基于姓名分组重编码多种族记录的优化实现

你的需求可以通过更紧凑的dplyr管道操作完成,全程不需要额外中间变量,代码逻辑更清晰:

library(dplyr)

# 示例数据
df <- data.frame('Name' = c("Jon", "Jon", "Bobby", "Sarah", "Fred"),
                 'Race' = c("Black", "White", "Asian", "Asian", "Black"))

# 优化后的实现
df1 <- df %>%
  distinct(Name, Race) %>%  # 先去除重复的姓名-种族组合
  group_by(Name) %>%
  summarise(
    # 分组判断:多种族则标记为Multiracial,否则保留原种族
    Race = if_else(n_distinct(Race) > 1, "Multiracial", first(Race))
  ) %>%
  ungroup()

优化点说明

  1. 减少中间变量:原代码需要单独创建multi_answer存储分组统计结果,这里直接在管道内完成判断和重编码,避免冗余变量
  2. 风格统一:全程使用dplyr的管道语法,替代原代码中混合基础R的索引操作(df1[df1$Name %in% ...]),代码可读性更强
  3. 自动去重:summarise按姓名分组后,每个姓名只会生成一行结果,不需要像原代码那样二次调用unique(df1)

如果想进一步简化,因为第一步已经用distinct去重了分组内的重复种族,所以可以用n()替代n_distinct(Race),效率更高:

df1 <- df %>%
  distinct(Name, Race) %>%
  group_by(Name) %>%
  summarise(
    Race = case_when(
      n() > 1 ~ "Multiracial",
      TRUE ~ Race
    )
  ) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:35:35