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

如何在R语言DataFrame中按Country分组生成RESULT计算列?

解决R语言按分组计算并添加新列的问题

我明白你的困扰啦——用group_by()加summarize()没成功,是因为summarize()会把数据聚合到分组维度,而我们需要保留原数据的每一行来生成新列,这时候mutate()才是正确的选择!

方法一:使用dplyr包(推荐,代码可读性高)

首先确保你已经安装并加载了dplyr包,然后按以下步骤操作:

# 加载dplyr包
library(dplyr)

# 构造你的原始数据框
COUNTRY<- c('USA','USA','USA','USA','USA','USA','USA','USA','USA','UK','UK','UK','UK','GERMANY','GERMANY','GERMANY','GERMANY','GERMANY','GERMANY') 
CITY<- c('NEW YORK','LOS ANGELES','CHICAGO','HOUSTON','PHOENIX','PHILADELPHIA','SAN ANTONIO','SAN DIEGO','DALLAS','LONDON','CAMBRIDGE','LIVERPOOL','MANCHESTER','BERLIN','HAMBURG','FRANKFURT','COLOGNE','STUTTGART','HANNOVER') 
BMW_CAR<- c(25,46,176,22,22,25,881,133,339,177,29,175,165,165,617,350,232,14,778) 
DF <- data.frame(COUNTRY,CITY,BMW_CAR)

# 按国家分组,添加RESULT列
DF <- DF %>%
  group_by(COUNTRY) %>%
  mutate(RESULT = sum(BMW_CAR) - BMW_CAR) %>%
  ungroup() # 取消分组,方便后续非分组操作,可选

代码解释:

  • group_by(COUNTRY):将数据按COUNTRY列分组
  • mutate(RESULT = sum(BMW_CAR) - BMW_CAR):在原数据的每一行添加RESULT列,值为当前组的BMW_CAR总和减去当前行的BMW_CAR值
  • ungroup():可选操作,如果你后续不需要保留分组状态,可以取消分组

方法二:使用Base R(无需额外包)

如果你不想加载dplyr包,用Base R的ave()函数也能快速实现:

# 构造原始数据框(同上)
COUNTRY<- c('USA','USA','USA','USA','USA','USA','USA','USA','USA','UK','UK','UK','UK','GERMANY','GERMANY','GERMANY','GERMANY','GERMANY','GERMANY') 
CITY<- c('NEW YORK','LOS ANGELES','CHICAGO','HOUSTON','PHOENIX','PHILADELPHIA','SAN ANTONIO','SAN DIEGO','DALLAS','LONDON','CAMBRIDGE','LIVERPOOL','MANCHESTER','BERLIN','HAMBURG','FRANKFURT','COLOGNE','STUTTGART','HANNOVER') 
BMW_CAR<- c(25,46,176,22,22,25,881,133,339,177,29,175,165,165,617,350,232,14,778) 
DF <- data.frame(COUNTRY,CITY,BMW_CAR)

# 添加RESULT列
DF$RESULT <- ave(DF$BMW_CAR, DF$COUNTRY, FUN = function(x) sum(x) - x)

代码解释:

  • ave()函数会根据第二个参数(DF$COUNTRY)分组,对第一个参数(DF$BMW_CAR)应用自定义函数,返回和原向量长度一致的结果,正好可以直接赋值给新列。

验证结果

两种方法得到的结果都完全符合你的要求:

  • USA组BMW_CAR总和为1669,第一行RESULT=1669-25=1644
  • UK组总和为546,第十行RESULT=546-177=369
  • GERMANY组总和为2156,第18行RESULT=2156-14=2142

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 05:52:46