如何用单行代码在同一数据框中实现Dplyr唯一值计数与总计数
在同一数据框中同时计算总计数与唯一值计数(dplyr实现)
当然可以!完全不需要用rbind合并,用dplyr的核心函数就能一条管道链搞定,分两种常见场景给你演示:
场景1:按分组生成两列统计结果(每个组对应总计数+唯一值计数)
如果你想按某个变量分组,每个分组行里同时显示该组的总观测数和目标变量的唯一值数量,直接用summarize()同时生成两个统计列即可:
library(dplyr) # 示例数据:mtcars,按cyl分组,统计每组总观测数和唯一gear的数量 mtcars %>% group_by(cyl) %>% summarize( 总计数 = n(), 唯一值计数 = n_distinct(gear) )
这里n()用来计算当前分组的总观测数,n_distinct(gear)则统计gear列的唯一值数量,结果会是一个包含分组列、总计数列、唯一值计数列的数据框。
场景2:将两个统计量作为行展示(一行总计数,一行唯一值计数)
如果你希望把总计数和唯一值计数作为单独的行呈现,同样可以用summarize()构造一个两行的结果:
mtcars %>% summarize( 统计类型 = c("总计数", "唯一值计数"), 数值 = c(n(), n_distinct(gear)) )
这样输出的就是一个两行两列的数据框,清晰区分两种统计结果。
两种方式都完全不需要额外合并操作,直接在dplyr的管道流里完成所有计算~
内容的提问来源于stack exchange,提问作者tangerine7199
相关产品推荐
相关产品推荐

