R子集和和和,无需求助于for循环

R子集和和和,无需求助于for循环,r,for-loop,subset,tidyverse,R,For Loop,Subset,Tidyverse,我有以下数据集: col1 col2 col3 col4 row1 x True Yes 0.4 row1 y False No 0.3 row1 z True Yes 0.5 其中,第1列到第3列有一组固定的值。我需要将这些固定值的所有可能组合子集,然后将第4列中剩余的金额相加。例如,如果我一次做一个,手动: subset1 <- data %>% fil

我有以下数据集:

      col1    col2    col3    col4
row1    x     True    Yes      0.4
row1    y     False   No       0.3
row1    z     True    Yes      0.5
其中,第1列到第3列有一组固定的值。我需要将这些固定值的所有可能组合子集,然后将第4列中剩余的金额相加。例如,如果我一次做一个,手动:

subset1 <- data %>% 
  filter(col1 == 'x' & col2== True & col3== 'Yes') %>%
  pull(col4) %>%
  sum

subset2 <- data %>% 
  filter(col1 == 'y' & col2== False & col3== 'No') %>%
  pull(col4) %>%
  sum

subset3 <- data %>% 
  filter(col1 == 'z' & col2== True & col3== 'Yes') %>%
  pull(col4) %>%
  sum
subset1%
筛选器(col1='x'&col2==True&col3=='Yes')%>%
拉力(col4)%>%
总和
2%以下
过滤器(col1='y'&col2==False&col3=='No')%>%
拉力(col4)%>%
总和
低于3%
过滤器(col1='z'&col2==True&col3=='Yes')%>%
拉力(col4)%>%
总和
但是,实际的数据集包含十几个列,每个列有一个固定的列表,每个列大约有十几个值。手动将这些代码子集将需要几百行几乎相同的代码。有没有办法用一个简单的函数生成这些子集表?类似于:

list1 <- c('x', 'y', 'z')
list2 <- c(True, False)
list3 <- c("Yes", "No")


f1 <- function(data, list1, list2, list3){
  table <- timeline %>% 
    filter(col1 %in% list1 & col2 %in% list2 & col3 %in% list3) %>%
    pull(col4) %>%
    sum
}

list1您可以尝试下面的代码,看看它是否有效:

yourdf%
分组依据(列)%>%
汇总(新列=汇总(要汇总的列))

一定要让我们知道它是否有效!祝你好运

澄清/更正更新:将其分配给新的df,而不是前面提到的yourdf。。。所以新的