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

R数据框按分组将同组男性Rate值合并到女性Rate值的实现方法

R实现分组新增Rate2列的解决方案

需求说明

现有数据框每组包含性别为M、F的两条记录,需新增列Rate2,规则如下:

  • 性别为M的行,Rate2值与原Rate列完全一致
  • 性别为F的行,Rate2值为同组M的Rate值加当前行原Rate值

方案1:dplyr包实现(推荐,代码简洁易读)

# 未安装包先运行 install.packages("dplyr") 
library(dplyr)

df <- df %>%
  group_by(Group) %>% # 按分组字段分组
  mutate(Rate2 = ifelse(Sex == "M", Rate, Rate[Sex == "M"] + Rate)) %>%
  ungroup() # 解除分组,避免后续操作受分组影响

方案2:基础R实现(无需安装第三方包)

# 提取每个分组对应的M性别Rate值,构建命名向量用于匹配
m_rate_map <- with(df[df$Sex == "M", ], setNames(Rate, Group))
# 新增Rate2列
df$Rate2 <- ifelse(df$Sex == "M", df$Rate, m_rate_map[as.character(df$Group)] + df$Rate)

运行结果示例

使用示例数据运行后输出如下:

Group Sex       Rate      Rate2
1      A   M -1.0678237 -1.0678237
2      A   F -0.2179749 -1.2857986
3      B   M -1.0260044 -1.0260044
4      B   F -0.7288912 -1.7548956
5      C   M -0.6250393 -0.6250393
6      C   F -1.6866933 -2.3117326
7      D   M  0.8377870  0.8377870
8      D   F  0.1533731  0.9911601
9      E   M -1.1381369 -1.1381369
10     E   F  1.2538149  0.1156780

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:24:03