dput(new)
structure(list(ID = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22), A1 = c(1, 1, 1, 1, 0,
0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
Here is a purrr solution:
is_one <- function(x) all(x == 1)
df %>%
nest(-ID) %>%
mutate(eval = purrr::map_chr(data, ~ paste0(.x %>%
dplyr::select_if(is_one) %>%
names(.), collapse = ", ")))
# A tibble: 22 x 3
ID data eval
>
1 1 [1 x 9] A1, A2
2 2 [1 x 9] A1, A2
3 3 [1 x 9] A1
4 4 [1 x 9] A1
5 5 [1 x 9] ""
6 6 [1 x 9] A2, A8
7 7 [1 x 9] A6, A8
8 8 [1 x 9] A1, A8
9 9 [1 x 9] A6, A8
10 10 [1 x 9] A8