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

在R中按区域/年份分组,创建个体是否属众数类别的标识变量

为数据集添加众数类别标识列

你已经生成了各区域/年份对应众数性别的groups数据集,只需要将其与原数据集df1关联,再通过逻辑判断生成标识列即可。

先修正groups的代码

你提供的groups代码末尾多了一个冗余的闭合括号,正确代码如下:

# 创建众数计算函数
mode <- function(codes){which.max(tabulate(codes))}

# 生成各区域/年份的众数表
groups <- df1 %>% group_by(Area, Year) %>%  
           summarise(mode = mode(Gender))

方法1:使用dplyr工具链推荐

通过left_join关联两个数据集,再用mutate生成标识列:

library(dplyr)

df1 <- df1 %>%
  # 按Area和Year关联groups
  left_join(groups, by = c("Area", "Year")) %>%
  # 判断Gender是否等于对应组的众数,是则标记1,否则0
  mutate(is_mode = ifelse(Gender == mode, 1, 0))

方法2:使用base R实现

如果偏好base R语法,用merge关联后生成标识列:

# 关联df1和groups,保留df1所有行
df1_merged <- merge(df1, groups, by = c("Area", "Year"), all.x = TRUE)
# 生成标识列,as.integer将逻辑值转为1/0
df1_merged$is_mode <- as.integer(df1_merged$Gender == df1_merged$mode)

# 也可以直接在原df1上添加列
df1$is_mode <- as.integer(df1$Gender == merge(df1, groups, by = c("Area", "Year"), all.x = TRUE)$mode)

最终df1中的is_mode列会用1标记属于所在区域/年份众数类别的个体,0标记不符合的个体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:35:44