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

在R语言中按sub组汇总并计算完成率百分比的实现方法

按分组计算完成率的解决方案

首先是你的原始数据:

example <- data.frame(
  sub = c(rep(1091, 3),
          rep(2091,4)),
  completed_sessions = c(1,0,1,0,1,1,1)
)

方法一:使用dplyr包(推荐,代码简洁直观)

先加载dplyr包,通过分组汇总实现需求:

library(dplyr)

example_solution <- example %>%
  group_by(sub) %>%
  summarize(
    num_complete = sum(completed_sessions == 1), # 统计每组completed_sessions为1的数量
    total_entries = n(), # 获取每组的观测总数
    percent_complete = round(num_complete / total_entries * 100, 2) # 计算百分比并保留两位小数
  ) %>%
  ungroup() # 取消分组,转为普通数据框

# 输出结果
example_solution

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

通过aggregate函数实现分组计算:

# 分组计算num_complete和total_entries
agg_result <- aggregate(completed_sessions ~ sub, data = example, FUN = function(x) {
  c(num_complete = sum(x == 1), total_entries = length(x))
})

# 整理成目标格式并计算百分比
example_solution_base <- data.frame(
  sub = agg_result$sub,
  num_complete = agg_result$completed_sessions[, 1],
  total_entries = agg_result$completed_sessions[, 2],
  percent_complete = round(agg_result$completed_sessions[, 1] / agg_result$completed_sessions[, 2] * 100, 2)
)

# 输出结果
example_solution_base

两种方法最终都会得到你期望的输出:

example_solution <- data.frame(
  sub = c(1091, 2091),
  num_complete = c(2,3),
  total_entries = c(3,4),
  percent_complete = c(66.67, 75.00)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:12:52