在R中按其他变量汇总因子水平观测数的问题求助
解决分组统计ErrorType计数重复的问题
你代码里的count(df, ErrorType)调用的是原始数据集df的全局统计结果,不是当前分组的子集数据,所以每个分组都会重复输出全局的ErrorType计数,这就是重复问题的根源。
下面是两种正确的解决方法:
方法一:使用summarise()配合n()
error.sum <- df %>% group_by(TrainingCondition, Group, SessionType, ErrorType) %>% summarise(Count = n(), .groups = "drop")
n()在分组后的summarise中,会自动计算当前分组内的观测数量,也就是对应ErrorType在该分组下的出现次数。.groups = "drop"可以让结果转为普通数据框,避免后续操作时残留分组状态导致的意外问题。
方法二:直接使用count()函数一次性完成分组计数
error.sum <- df %>% count(TrainingCondition, Group, SessionType, ErrorType, name = "Count")
count()本身支持传入多个分组变量,会自动按指定变量分组后统计每组的条目数,name参数用来指定计数列的名称为"Count",写法更简洁高效。
额外提示
如果你的数据中存在同一被试(ParticipantID)在同一分组下重复记录同一ErrorType的情况,需要先去重再统计的话,可以在代码前加上去重步骤:
error.sum <- df %>% distinct(ParticipantID, Group, SessionType, TrainingCondition, ErrorType) %>% count(TrainingCondition, Group, SessionType, ErrorType, name = "Count")
内容的提问来源于stack exchange,提问作者Artabanos
相关产品推荐
相关产品推荐

