首页 > 解决方案 > 计算数据框中每一列的数字(因子)在每组中出现的次数

问题描述

正如标题所示,我正在尝试扩展此处提出的问题:

计算一个数字(因子)在每组中出现的次数

但是对于给定数据框中的所有列。下面是一个可重现的示例:

dat <- data.frame(Bin = rep(1:4, each = 50), 
                  Number = sample(5, 200, replace = T, prob = c(1,1,1,2,3)),
                  Number2 = sample(5, 200, replace = T, prob = c(1,1,1,2,3)))


> head(dat)
  Bin Number Number2
1   1      4       2
2   1      5       5
3   1      4       4
4   1      4       1
5   1      5       5
6   1      5       3

我可以通过多个 dcast 来做到这一点。

dcast(dat, Bin ~ Number)
dcast(dat, Bin ~ Number2) 

但是,我的实际数据框有更多列。任何帮助,将不胜感激!

谢谢。

标签: r

解决方案


获取长格式数据并使用count

library(dplyr)
library(tidyr)

dat %>%
  pivot_longer(cols = starts_with('Number')) %>%
  count(Bin, name, value) %>%
  pivot_wider(names_from = name, values_from = n)

推荐阅读