Одно решение с участием purrr
, tibble
, dplyr
и tidyr
может быть:
map(.x = 1:nrow(dat), ~ combn(dat$VALUE, .x, paste, collapse = ",") %>%
enframe()) %>%
bind_rows() %>%
rowid_to_column() %>%
separate_rows(value) %>%
left_join(dat, by = c("value" = "VALUE")) %>%
group_by(rowid) %>%
summarise(comb = toString(value),
sum = sum(LOOKUP))
rowid comb sum
<int> <chr> <dbl>
1 1 Apple 1000
2 2 Banana 100
3 3 Grape 10
4 4 Orange 1
5 5 Apple, Banana 1100
6 6 Apple, Grape 1010
7 7 Apple, Orange 1001
8 8 Banana, Grape 110
9 9 Banana, Orange 101
10 10 Grape, Orange 11
11 11 Apple, Banana, Grape 1110
12 12 Apple, Banana, Orange 1101
13 13 Apple, Grape, Orange 1011
14 14 Banana, Grape, Orange 111
15 15 Apple, Banana, Grape, Orange 1111
Пример данных:
dat <- data.frame(LOOKUP= c(1000, 100, 10, 1),
VALUE = c("Apple", "Banana", "Grape", "Orange"),
stringsAsFactors = FALSE)