sum()与NA的行为

时间:2018-08-27 17:19:27

标签: r

我有一系列数字需要加总一些值丢失(= NA),在极少数情况下,所有值都丢失。例如:

sum(c(1,1,2),na.rm=TRUE)
sum(c(1,1,NA),na.rm=TRUE)

第一行的计算结果为4,第二行的计算结果为2。

但是,如果所有情况均为NA,如下所示:

sum(c(NA,NA,NA),na.rm=TRUE)

该值为0,而不是NA。

理想情况下,如果所有值均为NA,我希望将其评估为NA。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

我们可以定义自己的sum函数:

SELECT something,something,something
FROM (SELECT p.id as person_id, i.id as item_id, etc, etc, etc
      FROM Person p, Item i) x
LEFT JOIN person_item pi ON x.person_id = pi.person_id AND x.event_id = pi.event_id

结果:

my_sum <- function(...) sum(..., na.rm = !all(is.na(c(...))))

答案 1 :(得分:0)

像这样添加ifelse

some_vector <- c(1,2,3,NA)
ifelse(sum(is.na(some_vector)) == length(some_vector), NA, sum(some_vector, na.rm = TRUE))