Создать новые столбцы, блокируя массив внутри mutate (dplyr) - PullRequest
2 голосов
/ 30 апреля 2020

У меня есть следующий фиктивный фрейм данных с именем df :

A1 A2 A3 B1 B2 B3 C1 C2 C3
1  1  1  2  2  2  3  3  3

, и я хотел бы объединить столбцы, содержащие одну и ту же букву, в новый столбец (назвав его с помощью соответствующего письмо).

Я ожидал бы такой результат:

A1 A2 A3 B1 B2 B3 C1 C2 C3 A B C
1  1  1  2  2  2  3  3  3  3 6 9

Я знаю, что могу достичь этого результата, используя mutate из dyplr:

mutate(df,
       A = A1 + A2 + A3,
       B = B1 + B2 + B3,
       C = C1 + C2 + C3)

Есть ли способ? сделать это, используя вектор типа letters <- c("A", "B", "C") и зацикливая этот вектор внутри функции mutate? Что-то вроде:

mutate(df,
       letters = paste0(letters,"1") + paste0(letters,"2") + paste0(letters,"3") )

1 Ответ

1 голос
/ 30 апреля 2020

Одно dplyr и purrr решение может быть:

bind_cols(df, map_dfc(.x = LETTERS[1:3],
                      ~ df %>%
                       transmute(!!.x := rowSums(select(., starts_with(.x))))))

  A1 A2 A3 B1 B2 B3 C1 C2 C3 A B C
1  1  1  1  2  2  2  3  3  3 3 6 9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...