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

在R中按(T,C)分组统计组内行数的问题及错误解决

问题描述

原始数据集如下:

D     T C    
  <dbl> <dbl> <chr>
1     1  2000 A    
2     2  2000 A    
3     3  2000 A    
4     1  2000 B    
5     5  2000 B    
6     6  2000 B    
7     1  2001 A    
8     2  2001 A    
9     3  2001 B    

需要按(T,C)分组,给每行添加对应组的总行数,期望结果如下:

D     T C     count
  <dbl> <dbl> <chr> <int>
1     1  2000 A         3
2     2  2000 A         3
3     3  2000 A         3
4     1  2000 B         3
5     5  2000 B         3
6     6  2000 B         3
7     1  2001 A         2
8     2  2001 A         2
9     3  2001 B         1

使用以下代码后,所有count值均为5,不符合预期:

sample%>%group_by(T,C) %>% mutate(count = n_distinct(D))
解决方案

问题出在函数选择错误:n_distinct(D)用于统计每组中D的唯一值个数,而你需要的是每组的总行数,应使用n()函数。

正确代码:

sample %>% 
  group_by(T, C) %>% 
  mutate(count = n()) %>% 
  ungroup() # 可选,若后续无需分组状态可取消分组

解释:分组后调用n(),会返回当前组的总行数,将其赋值给count列即可得到期望结果。之前得到全为5的结果,是因为整个数据集里D的唯一值共有5个(1、2、3、5、6),说明分组逻辑可能未正确生效(比如管道符书写错误),但核心问题是用错了统计函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:15:42