[R] Sum function and missing values --- need to mimic SAS sum function

John Fox jfox at mcmaster.ca
Mon Jan 26 01:17:53 CET 2015


Dear Allen,

This seems reasonably straightforward to me, suggesting that I might not properly understand what you want to do. How about something like the following?

> mysum <- function(...){
+   x <- c(...)
+   if (all(is.na(x))) NA else sum(x, na.rm=TRUE)
+ }

> mysum(1, 2, 3, NA)
[1] 6
> mysum(1:3)
[1] 6
> mysum(NA, NA, NA)
[1] NA
> mysum(c(NA, NA, NA))
[1] NA

I hope this helps,
 John

------------------------------------------------
John Fox, Professor
McMaster University
Hamilton, Ontario, Canada
http://socserv.mcmaster.ca/jfox/

On Sun, 25 Jan 2015 15:21:52 -0800
 "Allen Bingham" <aebingham2 at gmail.com> wrote:
> I understand that in order to get the sum function to ignore missing values
> I need to supply the argument na.rm=TRUE. However, when summing numeric
> values in which ALL components are "NA" ... the result is 0.0 ... instead of
> (what I would get from SAS) of NA (or in the case of SAS ".").
> 
> Accordingly, I've had to go to 'extreme' measures to get the sum function to
> result in NA if all arguments are missing (otherwise give me a sum of all
> non-NA elements).
> 
> So for example here's a snippet of code that ALMOST does what I want:
> 
>  
> SumValue<-apply(subset(InputDataFrame,!is.na(Variable.1)|!is.na(Variable.2),
> select=c(Variable.1,Variable.2)),1,sum,na.rm=TRUE)
> 
> In reality this does NOT give me records with NA for SumValue ... but it
> doesn't give me values for any records in which both Variable.1 and
> Variable.2 are NA --- which is "good enough" for my purposes.
> 
> I'm guessing with a little more work I could come up with a way to adapt the
> code above so that I could get it to work like SAS's sum function ... 
> 
> ... but before I go that extra mile I thought I'd ask others if they know of
> functions in either base R ... or in a package that will better mimic the
> SAS sum function.
> 
> Any suggestions?
> 
> Thanks.
> ______________________________________
> Allen Bingham
> aebingham2 at gmail.com
> 
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list