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