group_by и измените значения, если сумма столбца от 0 до NA в R - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть таблица, и я сгруппировал ее по двум столбцам. В каждой из этих групп я хочу изменить несколько столбцов. Если сумма столбца (в группе) равна 0, то каждая строка в этом столбце должна быть заменена на NA. В конце я хочу стартовую таблицу, но с NA вместо 0.

Я попытался:

table_neu <- table %>%
    group_by(A,B) %>%
    mutate_at(.vars = vars(C_01:C_12),
              .funs = funs(case_when(
                  sum(.) == 0 ~ NA,
                  TRUE ~ .)),
              na.rm = TRUE) %>%
    ungroup()

Я получаю эту ошибку и не знаю, в чем проблема.

Случай 3 (colsum(C_01) == 0 ~ NA) должен быть двусторонней формулой, а не логическим вектором. Обратный возврат:

1 Ответ

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

Попробуйте использовать:

library(dplyr)

table_neu <- table %>%
               group_by(A,B) %>%
               mutate_at(vars(C_01:C_12),~case_when(
                                           sum(., na.rm = TRUE) == 0 ~ NA_real_,
                                           TRUE ~ .)) %>%
                ungroup()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...