Dear R People: I have a data frame with some columns that are numeric and some which are factors. There are zeros in the numeric columns and I would like to change them to NAs. However, there are zeros in some of the factor columns, and I would like them to be left alone. Is there a "global" way to do this, please? I was thinking about use the results from "str" but am not sure. R Version 2.0.0 Windows. Thanks in advance. Sincerely, Laura Holt mailto: lauraholt_983 at hotmail.com Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963
Laura Holt wrote:> Dear R People: > > I have a data frame with some columns that are numeric and some which > are factors. > > There are zeros in the numeric columns and I would like to change them > to NAs. However, there are zeros in some of the factor columns, and I > would like them to be left alone. > > Is there a "global" way to do this, please? I was thinking about use > the results from "str" but am not sure. > > R Version 2.0.0 Windows. >Let x be your data.frame. Then use: is.num <- sapply(x, is.numeric) x[is.num] <- lapply(x[is.num], function(y) ifelse(y == 0, NA, y)) HTH, --sundar
This isn't pretty but it's a way to do it:
foo <- data.frame(x = c(1,0,1,1,0,2,4), y = as.factor(c(0,2,1,1,0,3,1)))
Zero2NA <- function(x){
if(is.numeric(x)) { x[x == 0] <- NA; }
return(x)
}
foo2 <- as.data.frame(lapply(foo, Zero2NA))
foo
foo2
HTH, Andy
> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch
> [mailto:r-help-bounces at stat.math.ethz.ch]On Behalf Of Laura Holt
> Sent: Tuesday, November 16, 2004 11:31 AM
> To: r-help at stat.math.ethz.ch
> Subject: [R] Changing zeros to NAs in a data frame
>
>
> Dear R People:
>
> I have a data frame with some columns that are numeric and some which are
> factors.
>
> There are zeros in the numeric columns and I would like to change them to
> NAs. However, there are zeros in some of the factor columns, and I would
> like them to be left alone.
>
> Is there a "global" way to do this, please? I was thinking about
use the
> results from "str" but am not sure.
>
> R Version 2.0.0 Windows.
>
> Thanks in advance.
> Sincerely,
> Laura Holt
> mailto: lauraholt_983 at hotmail.com
>
>
> Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>
On Tue, 16 Nov 2004, Laura Holt wrote:> Dear R People: > > I have a data frame with some columns that are numeric and some which are > factors. > > There are zeros in the numeric columns and I would like to change them to > NAs. However, there are zeros in some of the factor columns, and I would > like them to be left alone. > > Is there a "global" way to do this, please? I was thinking about use the > results from "str" but am not sure.myDF <- data.frame(a=0:4, b=letters[1:5], c=-2:2) myDF[] <- lapply(myDF, function(x) if(is.numeric(x)) {x[x==0] <- NA; x} else x)> myDFa b c 1 NA a -2 2 1 b -1 3 2 c NA 4 3 d 1 5 4 e 2 -- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595