[R] Sum of columns of a data frame equal to NA when all the elements are NA

William Dunlap wdunlap at tibco.com
Wed Mar 21 18:43:38 CET 2018


Use rowSums(is.na(d))==ncol(d) to pick out the rows will no good values.
E.g.,

> d <- data.frame(x1=c(NA,2:4), x2=c(NA,NA,13:14), x3=c(NA,NA,NA,44))
> d
  x1 x2 x3
1 NA NA NA
2  2 NA NA
3  3 13 NA
4  4 14 44
> s <- rowSums(d, na.rm=TRUE)
> s
[1]  0  2 16 62
> s[ rowSums(is.na(d))==ncol(d) ] <- NA
> s
[1] NA  2 16 62


Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Wed, Mar 21, 2018 at 8:44 AM, Stefano Sofia <
stefano.sofia at regione.marche.it> wrote:

> Dear list users,
> let me ask you this trivial question. I worked on that for a long time, by
> now.
> Suppose to have a data frame with NAs and to sum some columns with rowSums:
>
> df <- data.frame(A = runif(10), B = runif(10), C = rnorm(10))
> df[1, ] <- NA
> rowSums(df[ , which(names(df) %in% c("A","B"))], na.rm=T)
>
> If all the elements of the selected columns are NA, rowSums returns 0
> while I need NA.
> Is there an easy and efficient way to use rowSums within a function like
>
> function(x) ifelse(all(is.na(x)), as.numeric(NA), rowSums...)?
>
> or an equivalent function?
>
> Thank you for your help
> Stefano
>
>
>
>          (oo)
> --oOO--( )--OOo----------------
> Stefano Sofia PhD
> Area Meteorologica e  Area nivologica - Centro Funzionale
> Servizio Protezione Civile - Regione Marche
> Via del Colle Ameno 5
> 60126 Torrette di Ancona, Ancona
> Uff: 071 806 7743
> E-mail: stefano.sofia at regione.marche.it
> ---Oo---------oO----------------
>
> ________________________________
>
> AVVISO IMPORTANTE: Questo messaggio di posta elettronica può contenere
> informazioni confidenziali, pertanto è destinato solo a persone autorizzate
> alla ricezione. I messaggi di posta elettronica per i client di Regione
> Marche possono contenere informazioni confidenziali e con privilegi legali.
> Se non si è il destinatario specificato, non leggere, copiare, inoltrare o
> archiviare questo messaggio. Se si è ricevuto questo messaggio per errore,
> inoltrarlo al mittente ed eliminarlo completamente dal sistema del proprio
> computer. Ai sensi dell’art. 6 della DGR n. 1394/2008 si segnala che, in
> caso di necessità ed urgenza, la risposta al presente messaggio di posta
> elettronica può essere visionata da persone estranee al destinatario.
> IMPORTANT NOTICE: This e-mail message is intended to be received only by
> persons entitled to receive the confidential information it may contain.
> E-mail messages to clients of Regione Marche may contain information that
> is confidential and legally privileged. Please do not read, copy, forward,
> or store this message unless you are an intended recipient of it. If you
> have received this message in error, please forward it to the sender and
> delete it completely from your computer system.
>
> --
> Questo messaggio  stato analizzato da Libra ESVA ed  risultato non infetto.
> This message was scanned by Libra ESVA and is believed to be clean.
>
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list