我有一个数据框,比如说3个因子列:集群、性别、疫苗接种。我希望以“自动”方式而不是逐个获得按群集列分组的性别和接种列的摘要。
例如,要获得其中一个,这工作:
cluster <- sample(1:4, 1, size = 20)
set.seed(10)
sex <- sample(0:1, 1, size = 20)
set.seed(20)
vaccine <- sample(0:1, 1, size = 20)
df <- as.data.frame(cbind(cluster,sex,vaccine))
df <- as.data.frame(lapply(df, as.factor))
df %>%
group_by(cluster, sex) %>%
summarize(count = n())
但这意味着我必须为每个变量写这个(在真实的代码中,我有兴趣从中获得摘要的40个因子)。我也尝试了这样做,以自动为所有变量:
df %>%
group_by(cluster) %>%
summarize(across(everything(), count = n()))
但这给了我以下错误summarize()
中的错误:在论证中:across(everything(), count = n())
.第1组:cluster = 1
。由across()
中的错误引起:!...
必须为空。有问题的论点:· count = n()
是否有任何方法可以获得由一列分组的所有其他因子列的计数或百分比?(我想要的输出看起来像这样,或者每个类别的百分比)
x1c 0d1x提前感谢您
2条答案
按热度按时间c3frrgcw1#
这是一种方法,但它只工作,因为在
sex
和vaccine
变量中有相同数量的因子。如果在数据集中有一个具有不同数量因子的变量,则由于行数不同,对list_cbind
的调用将失败。创建于2023-06-14带有reprex v2.0.2
5lwkijsr2#
尝试
merge
处理生成的tibles列表。使用非对称数据集进行说明。colnames(df)[-1]
排除 cluster,留下 sex 和 vaccine 用于计数。数据