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

如何按两组计算各选项的受试者选择占比?

问题分析:计算分组内各Item的受试者占比

初始数据

你构建的初始DataFrame代码如下:

subject <- c(rep("A",3), rep("B",3), rep("C",3), rep("D",3))
item <- c(1:3, 1,4,5,1,2,6,3,4,7)
group <- c(rep("pre",6), rep("post",6))

initialdf <- data.frame(subject,item,group)

目标结果

你希望得到每个group(pre/post)中,选择各item的受试者占比,目标DataFrame代码如下:

item2 <- c(rep(1:7,2))
group2 <- c(rep("pre",7),rep("post",7))
percent <- c(100,rep(50,4),rep(0,2),rep(50,4),0,rep(50,2))

finaldf <- data.frame(item2,group2,percent)

尝试的分组方式

你尝试了以下8种分组组合:

  1. group_by(subject)%>%
  2. group_by(group)%>%
  3. group_by(subject,group)%>%
  4. group_by(group,subject)%>%
  5. group_by(group,item)%>%
  6. group_by(item,group)%>%
  7. group_by(item,subject)%>%
  8. group_by(subject,item)%>%

尝试的计算逻辑

每次调整分组后,你使用的计算代码(以group_by(subject)为例):

initialdf%>%
  group_by(subject)%>%
  summarise(n = n()) %>%
  mutate(freq = n / sum(n))%>%
  mutate(Percent = freq*100)

你的操作存在的核心问题

1. 分组逻辑偏离目标

你需要的是按group分组,统计每个group下各item对应的独立受试者数量,再除以该group的总受试者数,但大部分分组都没抓住这个核心:

  • 如group_by(subject)是按受试者分组,统计的是单个受试者的条目数占比,和目标需求完全无关;
  • group_by(group,item)虽然方向正确,但后续统计逻辑没匹配上。

2. 统计逻辑错误

你的summarise(n = n())统计的是分组内的条目总数,而非选择该item的独立受试者数。比如同一个受试者在pre组选了item1,你的代码会把该受试者的多条目重复计算,但实际上每个受试者在一个组内只需要统计一次。

3. 缺失补全空item的步骤

目标结果包含了所有1-7的item(包括某个组里无人选择的item,比如pre组的item6、7),但你的代码不会自动补全这些缺失的item,导致结果里没有这些占比为0的行。


内容的提问来源于stack exchange,提问作者Juliana Gómez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:05:16