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

如何在R的dataframe中为同组行分配指定值,新增CodeGrp列?

为DataFrame新增CodeGrp列的实现方法

数据准备

首先构建示例数据框:

myData <- 
  data.frame(
    Name = c("R","R","T","R","N","N","T"),
    Group = c(0,0,0,0,1,1,0),
    Code = c(0,2,2,0,3,0,4)
  )

数据预览:

> myData
  Name Group Code
1    R     0    0
2    R     0    2
3    T     0    2
4    R     0    0
5    N     1    3
6    N     1    0
7    T     0    4

需求说明

需要新增一列CodeGrp,规则如下:

  • 若该行Group值为0,直接复制该行的Code值;
  • 若该行Group值大于0,将该Group组内的最大Code值分配给组内所有行。

期望结果:

Name Group Code CodeGrp Explain
1    R     0    0       0 Copy over Code since Group = 0 
2    R     0    2       2 Copy over Code since Group = 0
3    T     0    2       2 Copy over Code since Group = 0
4    R     0    0       0 Copy over Code since Group = 0
5    N     1    3       3 Group is > 0 so insert in CodeGrp column the max Code in this Group
6    N     1    0       3 Group is > 0 so insert in CodeGrp column the max Code in this Group
7    T     0    4       4 Copy over Code since Group = 0

实现方法

方法一:base R实现

使用ave()函数按组计算最大值,结合ifelse()完成条件判断:

myData$CodeGrp <- with(myData, ifelse(Group == 0, Code, ave(Code, Group, FUN = max)))

方法二:dplyr实现

通过分组操作和mutate()函数实现:

library(dplyr)

myData <- myData %>%
  group_by(Group) %>%
  mutate(CodeGrp = ifelse(Group == 0, Code, max(Code))) %>%
  ungroup()

内容的提问来源于stack exchange,提问作者Village.Idyot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:09:23