group_by表,如果列的总和在R中为0到NA,则更改值

问题描述 投票:0回答:1

我有一个表,并按两列将其分组。在每个组中,我想更改几列。如果一列(组中)的总和为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)必须是双面公式,而不是逻辑vectorTraceback:

r group-by case-when
1个回答
1
投票

尝试使用:

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()
© www.soinside.com 2019 - 2024. All rights reserved.