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

在R语言中按组创建中位数上下分组的虚拟变量

R语言实现组内中位数分组的虚拟变量创建

需求说明

基于给定的数据框,按Y列分组,计算每组Z的中位数,生成两个虚拟变量:

  • A:当Z大于组内中位数时为1,否则为0
  • B:当Z小于组内中位数时为1,否则为0

实现代码

首先构造原始数据:

# 构造原始数据框
df <- data.frame(
  X = 1:9,
  Y = c("b", "a", "a", "c", "b", "a", "a", "b", "a"),
  Z = c(3, 8, 7, 1, 6, 4, 9, 5, 4)
)

使用dplyr包完成分组计算与虚拟变量生成:

library(dplyr)

# 分组计算并生成虚拟变量
df_result <- df %>%
  group_by(Y) %>%
  mutate(
    # 计算每组Z的中位数
    group_median = median(Z),
    # 生成A列:Z>组内中位数为1,否则0
    A = ifelse(Z > group_median, 1, 0),
    # 生成B列:Z<组内中位数为1,否则0
    B = ifelse(Z < group_median, 1, 0)
  ) %>%
  # 移除中间计算用的中位数列
  select(-group_median) %>%
  # 取消分组状态
  ungroup()

# 输出结果
print(df_result)

结果验证

运行代码后输出的结果与期望完全一致:

# A tibble: 9 × 5
      X Y         Z     A     B
  <int> <chr> <dbl> <dbl> <dbl>
1     1 b         3     0     1
2     2 a         8     1     0
3     3 a         7     0     0
4     4 c         1     0     0
5     5 b         6     1     0
6     6 a         4     0     1
7     7 a         9     1     0
8     8 b         5     0     0
9     9 a         4     0     1

内容的提问来源于stack exchange,提问作者flâneur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:22:11