在R中使用dplyr按多列分组后统计行数的问题
问题分析与解决
错误原因
你在group_by()里错误地使用了c(id, code, Type),c()函数会把三个列的所有元素拼接成一个单一长向量,长度是原数据行数的3倍(你的报错里显示88765150*3=266295450),而group_by()需要的是按多个列进行分组,不是合并成一个向量,因此出现了行数不匹配的错误。
正确代码
直接在group_by()里列出需要分组的列名即可,不需要用c()包裹:
library(dplyr) df %>% group_by(id, code, Type) %>% summarise(n = n(), .groups = "drop")
注:
.groups = "drop"用于取消分组状态,输出整洁的结果;如果不需要取消分组,可以省略这个参数。
运行结果
执行上述代码后,会得到你期望的输出:
id code Type n <dbl> <chr> <chr> <int> 1 4 3.7 A 2 2 4 244 B 1 3 6 3 A 1 4 6 14 B 1 5 6 D5 A 1 6 8 563 B 1 7 8 75.1 B 2
内容的提问来源于stack exchange,提问作者mashimena
相关产品推荐
相关产品推荐

