在R语言中为统计表格添加ID列与求和汇总列的实现方案咨询
实现方案
你原来的代码直接对table生成的列联表用as.data.frame()会输出长格式数据,没法直接做逐行求和,下面给你两种符合要求的实现方式:
方案1:原生table+rowSums实现(最简写法,推荐优先用)
# 生成id对role的列联表 n.actors <- table(IMDB_players$id, IMDB_players$role) # 直接构造目标数据框 n.actors.df <- data.frame( ID = rownames(n.actors), # 第一列设为ID,对应原来的id值 n.actors, # 保留各role的统计列 all = rowSums(n.actors) # 逐行求和得到汇总列 ) # 验证结果 head(n.actors.df)
方案2:aggregate函数实现(符合你要求的aggregate类函数写法)
# 按id分组统计各role的出现频次 n.actors.df <- aggregate( . ~ id, data = IMDB_players, FUN = length ) # 新增逐行求和的all列,跳过第一列的ID字段计算 n.actors.df$all <- rowSums(n.actors.df[, -1]) # 修改第一列列名为ID colnames(n.actors.df)[1] <- "ID" # 验证结果 head(n.actors.df)
补充说明
- 两种方案输出的都是宽格式表格:第一列为ID,后续每列对应一个role的统计值,最后一列为all汇总值
- 方案1代码更短、运算效率更高,适合处理大数据量的统计场景
- 方案2用aggregate实现,逻辑更直观,方便后续调整分组统计的规则
内容的提问来源于stack exchange,提问作者gilady
相关产品推荐
相关产品推荐

