【发布时间】:2020-12-02 02:42:59
【问题描述】:
我有以下数据集:
col1 col2 col3 col4
row1 x True Yes 0.4
row1 y False No 0.3
row1 z True Yes 0.5
其中第 1 到第 3 列具有一组固定值。我需要对这些固定值的所有可能组合进行子集化,然后将 column4 中剩余的数量相加。例如,如果我要一次执行一个,手动:
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
但是,实际数据集包含十几个列,每个列都有一个固定列表,每个列表大约有十几个值。手动对这些进行子集化需要几百行几乎相同的代码。有没有办法用一个简单的函数来生成这些子表?类似于:
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
}
【问题讨论】:
标签: r for-loop subset tidyverse