r - 根据 R 中包含 30 列的数据集按组创建汇总表

标签 r

假设我有这个示例数据:

ID <- c(1:10)
group <- c("A","A","A","B","B","B","B","B","B","B")
condition_tall <- c(0,1,1,1,1,0,0,0,1,1)
condition_long <- c(1,1,1,1,0,0,0,1,1,1)
condition_wide <- c(1,1,0,0,0,1,1,1,1,0)
check_tall <- c(1,1,1,1,1,1,0,1,0,1)
check_long <- c(1,1,1,1,1,1,0,1,0,1)
check_wide <- c(1,1,0,1,0,1,0,1,0,1)

dat <- data.frame(ID,group,condition_tall,condition_long,condition_wide,check_tall,check_long,check_wide)
dat

在 R 中生成这样的汇总表的最有效方法是什么?我想要按组划分的计数和百分比,用于“条件”和“检查”。非常感谢。

<表类=“s-表”> <标题> A组 B组 <正文> 变量 条件(N) 条件(%) 检查(N) 检查(%) 条件(N) 条件(%) 检查(N) 检查(%) 高 长 宽

最佳答案

dat %>%
  group_by(group) %>%
  summarise(across(-ID, list(n=sum, pct=mean))) %>%
  pivot_longer(-group, c('name', 'var', 'name1'),names_sep = '_') %>%
  pivot_wider(var, names_from = c(group, name, name1))

结果

# A tibble: 3 x 9
  var   A_condition_n A_condition_pct A_check_n A_check_pct B_condition_n B_condition_pct B_check_n B_check_pct
  <chr>         <dbl>           <dbl>     <dbl>       <dbl>         <dbl>           <dbl>     <dbl>       <dbl>
1 tall              2           0.667         3       1                 4           0.571         5       0.714
2 long              3           1             3       1                 4           0.571         5       0.714
3 wide              2           0.667         2       0.667             4           0.571         4       0.571

另一种快速方法:

fn <- ~list(c(n=sum(.x),pct=mean(.x)))

dat %>%
  pivot_longer(-c(ID, group), c('name1', 'var'), names_sep = '_') %>%
  pivot_wider(var, names_from = c(group, name1), values_fn = fn) %>%
  unnest_wider(-var, names_sep = '_')

结果:

# A tibble: 3 x 9
  var   A_condition_n A_condition_pct A_check_n A_check_pct B_condition_n B_condition_pct B_check_n B_check_pct
  <chr>         <dbl>           <dbl>     <dbl>       <dbl>         <dbl>           <dbl>     <dbl>       <dbl>
1 tall              2           0.667         3       1                 4           0.571         5       0.714
2 long              3           1             3       1                 4           0.571         5       0.714
3 wide              2           0.667         2       0.667             4           0.571         4       0.571

关于r - 根据 R 中包含 30 列的数据集按组创建汇总表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72836162/

相关文章:

r - 如何处理image.plot中R中的零对数?

r - 实现严格的重载方法签名以防止误用

r - Lubridate 获取一周中某一天的日期()

r - 根据日期键对多个 R 列表的值求和

r - 合并列,按值对齐,当值不匹配时填充 NA

r - 从数据框中删除特定的行

r - 如何访问原子向量属性?

r - 将一些分组列添加到 R 中的嵌套数据框

r - knitr 代码块中的矩阵乘法

从长格式到宽格式 reshape