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

如何在R中基于公司和年份双重条件统计董事数量并生成新列

在R中按公司和年份统计董事数量并新增列

你可以通过分组计算实现需求,以下是两种高效的方法,适用于你的大样本数据集(845,000+观测值):

原始数据示例

COMPANY     DIRECTOR      YEAR      
A           Mark          2005      
A           Steven        2005      
A           Mark          2006      
A           Steven        2006      
B           John          2006      
B           Elias         2006      
B           Vince         2006      
B           John          2007      
B           Elias         2007      
B           Vince         2007      
C           Peter         2005      
C           Josh          2005      
C           Adam          2005      
C           Evan          2005      
C           Peter         2006      
C           Josh          2006      
C           Adam          2006      
C           Evan          2006      
C           Peter         2007      
C           Josh          2007      
C           Adam          2007      
C           Evan          2007      

预期结果

COMPANY     DIRECTOR      YEAR      NUMBERDIRECTORS
A           Mark          2005      2
A           Steven        2005      2
A           Mark          2006      2
A           Steven        2006      2
B           John          2006      3
B           Elias         2006      3
B           Vince         2006      3
B           John          2007      3
B           Elias         2007      3
B           Vince         2007      3
C           Peter         2005      4
C           Josh          2005      4
C           Adam          2005      4
C           Evan          2005      4
C           Peter         2006      4
C           Josh          2006      4
C           Adam          2006      4
C           Evan          2006      4
C           Peter         2007      4
C           Josh          2007      4
C           Adam          2007      4
C           Evan          2007      4

方法1:Base R 原生实现

使用ave()函数按COMPANY和YEAR分组,计算每组的观测数量(即董事人数),并将结果映射回原数据的每一行:

# 假设你的数据框名为df
df$NUMBERDIRECTORS <- ave(rep(1, nrow(df)), df$COMPANY, df$YEAR, FUN = length)

方法2:dplyr 简洁实现

如果你习惯使用tidyverse工具链,dplyr的分组+新增列操作更直观:

library(dplyr)

df <- df %>%
  group_by(COMPANY, YEAR) %>%  # 按公司和年份分组
  mutate(NUMBERDIRECTORS = n()) %>%  # 统计每组行数作为董事数量
  ungroup()  # 取消分组,避免后续操作受影响

两种方法都能高效处理你的大样本数据,最终都会生成符合预期的NUMBERDIRECTORS列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:40:36