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

R语言按id分组统计每组内列值为A的数量实现方法问询

问题原因

你原来的代码中row_number()函数的作用是返回分组内当前行的行序号,无法统计整个分组中符合value == "A"条件的总记录数,因此无法得到预期结果。

正确实现代码(dplyr版本)

library(dplyr)
df1 <- df %>% 
  group_by(id) %>% 
  mutate(number_A = sum(value == "A", na.rm = TRUE)) %>% 
  ungroup() # 不需要后续分组操作的话可以加上解除分组

逻辑说明

  • value == "A"会对每一行返回布尔值,等于"A"为TRUE,否则为FALSE,遇到NA会返回NA
  • sum()计算时自动将TRUE转为1、FALSE转为0,加上na.rm = TRUE参数可以忽略NA值的干扰,统计出当前id分组下value为"A"的总个数
  • mutate()会将分组统计得到的总个数填充到该id分组的所有行,完全匹配你预期的输出格式

可选:基础R实现

如果你不想加载第三方包,可以用基础R的ave()函数实现相同效果:

df$number_A <- ave(df$value, df$id, FUN = function(x) sum(x == "A", na.rm = TRUE))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:54:04