首页 > 解决方案 > 如何汇总选定的列?

问题描述

这是数据框。

Number UrinateFrequently  UrgeUrinate
1      occasionally       rarely
2      rarely             rarely
3      occasionally       occasionally
4      rarely             always
5      frequently         always

我一次只能像这样总结一栏

a %>% group_by(UrinateFrequently) %>% summarise(n = n())

 UrinateFrequently     n
  <fct>             <int>
1 rarely                2
2 occasionally          2
3 frequently            1

我怎样才能像这样一次总结所有这些?

               UrinateFrequently  UrgeUrinate
rarely               x                 x
occasionally         x                 x
frequently           x                 x
always               x                 x

我已经尝试过了,但它不起作用。

a %>% summarise(across(everything(),list(group_by(.),n = n(.))))

标签: r

解决方案


由于两列中的唯一项不相同并且您想要一个共同的数据基础,因此首先转换为具有一组共同级别的“因子”数据类型sapplytable

 df[-1] <- lapply(df[-1] , factor, levels=unique(unlist(df[-1])) ) )
 #---------------------
 sapply(df[-1], table)
 #----------------
             UrinateFrequently UrgeUrinate
occasionally                 2           1
rarely                       2           2
frequently                   1           0
always                       0           2

我是 R 的“老派”,所以 tidyverse 函数不是我使用的第一个工具。作为一个疯狂的猜测,您可能想尝试 package:purrr 的map功能。


推荐阅读