我有一系列数字需要加总一些值丢失(= 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。有什么建议吗?
答案 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))