使用 dplyr 计算两个向量/变量的运算时传播 NA

Jha*_*a68 2 r dplyr

我有两个向量,A 和 B。我正在使用 dyplyr 中的 mutate 从 A 和 B 计算一个新向量 C。该操作是一个总和,因为我只想将两个变量连接为一个(来自二元性别中的单独分析的分数)。在给定行的两个向量都有 NA 的情况下,我需要新向量 C 来反映 NA,而不是 0。目前我正在使用:

DF=mutate(DF, C = rowSums(cbind(A, B), na.rm = T))
Run Code Online (Sandbox Code Playgroud)

但是,如果 A 和 B 向量都具有 NA,则这会给出“0”值。我已经搜索了有关类似主题的其他帖子,但无法从中提取出我需要的内容。

Jon*_*ing 5

这是一个 dplyr 单线。它的工作原理是dplyr::coalesce输出它收到的第一个非 NA。因此,如果可以计算总和,则使用该总和,否则输出非 NA 值,或者如果两者都是 NA,则为 NA。

library(dplyr)
df %>% mutate(c = coalesce(a+b, a, b))


## A tibble: 4 x 3
#      a     b     c
#  <dbl> <dbl> <dbl>
#1     1    NA     1
#2    NA    NA    NA
#3    NA     2     2
#4     2     3     5
Run Code Online (Sandbox Code Playgroud)

(使用 cardinal40 的样本df

df <- tibble(a = c(1, NA, NA, 2),
             b = c(NA, NA, 2, 3))
Run Code Online (Sandbox Code Playgroud)