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

如何使用R的collapse包在分组数据中生成对应组大小的新列

你之前代码的问题出在函数选择上:你调用的大写fNobs默认作用于完整列,不会识别数据框的分组属性,所以返回的是全数据集的行数。改用支持分组上下文的小写fnobs即可实现需求,完全对齐dplyr的输出效果。

正确实现代码

library(collapse)
library(ggplot2)
library(magrittr)

# 写法1:显式分组写法,和dplyr逻辑对齐
res <- mpg %>%
  fselect(manufacturer) %>%
  fgroup_by(manufacturer) %>%
  ftransform(more_than_10_obs = fnobs(manufacturer) > 10)

如果需要单独生成分组大小列,只需要把判断条件去掉即可:

res <- mpg %>%
  fselect(manufacturer) %>%
  fgroup_by(manufacturer) %>%
  ftransform(n_in_group = fnobs(manufacturer))

更高性能的无分组写法

针对超大数据量场景,可以跳过创建分组对象的步骤,直接给fnobs指定g参数传入分组列,性能更强:

res <- mpg %>%
  fselect(manufacturer) %>%
  ftransform(
    n_in_group = fnobs(manufacturer, g = manufacturer),
    more_than_10_obs = n_in_group > 10
  )

你可以用dplyr::all_equal()对比collapse输出和你原dplyr代码的输出,结果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:51:01