【发布时间】:2020-08-05 18:05:50
【问题描述】:
我在下面和这“两组”内有数据框,即 A&B 和 D&E 列。我想找到所有组合,然后按在 A&B 和 D&E 列应用不同过滤器的所有组合进行分组,但形式是当时只从每个组中选择 1 列。我不知道执行此操作的正确公式,而且实际上问题要大得多。
df=
Size A B D E
1 1 1 0 0
5 0 0 1 0
10 1 1 1 0
3 1 0 0 0
2 1 1 1 1
55 0 0 0 1
5 1 0 1 1
2 0 0 1 1
1 1 1 1 1
4 1 1 1 0
所以要过滤的组合应该是
过滤器 1:A=1 和 D=1
过滤器 2:A=1 和 D=0
过滤器 3:A=1 和 E=1
过滤器 4:A=1 和 E=0
过滤器 5:A=0 和 D=1
过滤器 6:A=0 和 D=0
过滤器 7:A=0 和 E=1
过滤器 8:A=0 和 E=0
过滤器 9:B=1 和 D=1
过滤器 10:B=1 AND D=0
过滤器 11:B=1 和 E=1
过滤器 12:B=1 AND E=0
过滤器 13:B=0 和 D=1
过滤器 14:B=0 和 D=0
过滤器 15:B=0 AND E=1
过滤器 16:B=0 和 E=0
我想找到一种方法来有效地创建这些过滤器组(始终从 A&B 或 D&E 列中抽取 1 个过滤器),然后找到每个过滤器设置的 Size 列的平均值和计数。我只是设法在没有不同组的情况下做到这一点来对过滤器进行采样。
我尝试的是这样的形式:
groupNames <- names(df)[2:5]
myGroups <- Map(combn,list(groupNames),seq_along(groupNames),simplify = FALSE) %>% unlist(recursive = FALSE)
results = lapply(myGroups, FUN = function(x) {do.call(what = group_by_, args = c(list(df), x)) %>% summarise( n = length(Size), avgVar1 = mean(Size))})
它平等对待四列,不考虑从 2 组中抽样。我可以对代码做些什么来完成这项工作?
非常感谢。
【问题讨论】:
标签: r dataframe group-by combinations permutation