我试图弄清楚如何使用两个分组列来聚合一个列,该列是具有二元结果(成功/失败)的因素。一个挑战是尝试还生成对于二元因子的一个结果具有零值的组组合的汇总行。例如,假设这是下面的dataframe:
dat <- data.frame(
Group1 = c("A", "A", "A", "B", "B", "C", "C", "C"),
Group2 = c("D", "D", "D", "E", "E", "F", "F", "F"),
Result = c("Success", "Success", "Fail", "Success", "Success", "Success", "Fail", "Fail")
)
理想情况下,我会想要一个如下所示的摘要:
# Group1 Group2 Success Fail
# A D 2 1
# B E 2 0
# C F 1 2
然而,我正在努力生成一个拆分列的结果。
我尝试使用aggregate()来实现以下功能:
aggregate(Result ~ Group1 + Group2, data = dat, FUN=length)
但似乎不能分解二元因子变量。
3条答案
按热度按时间yiytaume1#
您可以使用
dplyr::summarize()
并对值求和:输出量:
或者使用base R和
aggregate
,虽然我相信有一种更优雅的方法可以做到这一点,你可以单独计算计数,merge
,然后使用setNames
重命名:w1jd8yoj2#
关于
aggregate()
data.table
:关于
sqldf
ego6inou3#
下面是一个类似的方法,使用
pivot_wider()
:备注:
values_fn = length
查找数据集中Group1、Group2和Result的每个组合的长度1.对于数据集中没有行的组合,我们使用
values_fill
填充01.不确定你的实际数据集是什么样的,但是如果结果就像你给出的例子一样,并且只有两种可能性(成功和失败),那么让它们成为逻辑值TRUE和FALSE或1和0是有意义的。如果它们是类别,那么使它们成为因子是可行的方法