R语言 如果任何变量值为NA,则获取跨行求和的NA

2fjabf4q  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(142)

我有一个包含var1,var2,var3,var4的数据集,我正在计算一个总和var_total \<- var1 + var2 + var3 + var4。如果var1,var2,var3和var4中的任何一个值缺失,我希望在var_total中找到缺失值。
具有:
| 变量1|变量2|变量3|变量4|变量_总计|
| - ------| - ------| - ------| - ------| - ------|
| 1个|无|无|无|1个|
| 1个|不适用|第二章|无|三个|
| 1个|无|无|不适用|1个|
需求:
| 变量1|变量2|变量3|变量4|变量_总计|
| - ------| - ------| - ------| - ------| - ------|
| 1个|无|无|无|1个|
| 1个|不适用|第二章|无|不适用|
| 1个|无|无|不适用|不适用|
我猜是关于ifelse()的。

ztyzrc3y

ztyzrc3y1#

图书馆

library(dplyr)

数据

data <-
  tibble::tribble(
    ~var1, ~var2, ~var3, ~var4, ~var_total,
    1L,    0L,    0L,    0L,         1L,
    1L,    NA,    2L,    0L,         3L,
    1L,    0L,    0L,    NA,         1L
  )

代码

data %>% 
  rowwise() %>% 
  mutate(var_total = sum(c_across(cols = var1:var4),na.rm = FALSE))

输出

# A tibble: 3 x 5
# Rowwise: 
   var1  var2  var3  var4 var_total
  <int> <int> <int> <int>     <int>
1     1     0     0     0         1
2     1    NA     2     0        NA
3     1     0     0    NA        NA
oogrdqng

oogrdqng2#

使用以R为底数的rowSums()

data$var_total <- rowSums(data[ , 1:4])

或与dplyr:

library(dplyr)

data %>%
  mutate(var_total = rowSums(across(var1:var4)))

任一方法的结果:

var1 var2 var3 var4 var_total
1    1    0    0    0         1
2    1   NA    2    0        NA
3    1    0    0   NA        NA

相关问题