【发布时间】:2021-03-26 03:05:05
【问题描述】:
我需要按字段 A 对 data.frame 进行分组并汇总分类变量 B,并保留其前 2 个值和相应的计数。 B 有重复值。
示例数据:
## double to have duplicate values
mtcars2 <- rbind(mtcars, mtcars)
希望的代码示例(虽然我知道它并不简单):
mtcars2 %>%
group_by(gear) %>%
summarise(
n = n(),
disp_top1 = top(disp,1),
disp_top1_n = top_count(cat1,1),
disp_top2 = top(disp,2),
disp_top2_n = top_count(cat1,2)
)
结果会是这样的
gear nr disp_top1 disp_top1_n disp_top2 disp_top2_n
<dbl> <int> <dbl> <int> <dbl> <int>
1 3 30 472 2 460 2
2 4 24 168. 4 160 4
3 5 10 351 2 301 2
感谢您的帮助!
【问题讨论】:
-
请在您的问题中添加一个最小的可重现示例作为代码。你说的top1和top2是什么意思?去掉top1后,top1是mode,top2是mode吗?
-
感谢@Dharman 和 Holzben。很抱歉没有发布可重现的代码和测试数据,新手错误 =)。我使用 mtcars 编辑了问题。我尝试了 Dharman 解决方案,对于 2+ 重复的 disp 值不起作用,所以我做了一些调整,现在它可以工作了。代码如下。想知道是否有更短更快的方法,因为我需要汇总 200 多个分类变量,超过 2 亿条记录。
-
@AnilGoyal,感谢您的提示!问题已编辑。还注册了我到目前为止的解决方案。
标签: r dplyr aggregate categorical-data summarize