Dear Jason and Juan,

At 09:11 AM 1/14/2003 +1300, Jason Turner wrote:
On Mon, Jan 13, 2003 at 05:15:02PM +0000, juan pablo perez wrote:
> what should I do to replace in a data frame NA�s with zeroes?

I use lapply

> dd <- data.frame(a=c(1,2,NA,4),b=c(NA,2,3,4))
> dd
   a  b
1  1 NA
2  2  2
3 NA  3
4  4  4
> dd2 <- data.frame(lapply(dd,function(x,...){x[is.na(x)] <- 3.14159 ; x}))
> dd2
        a       b
1 1.00000 3.14159
2 2.00000 2.00000
3 3.14159 3.00000
4 4.00000 4.00000

That will generate a warning message for each non-numeric column in
your data frame.  A tidier way is left as an exercise. ;)
Here's a pretty simple expression using a for loop over columns (and testing for numeric data):

for(i in 1:ncol(dd)) if(is.numeric(dd[,i])) dd[is.na(dd[,i]), i] <- 0

I hope that this helps,
John
____________________________
John Fox
Department of Sociology
McMaster University
email: [EMAIL PROTECTED]
web: http://www.socsci.mcmaster.ca/jfox

______________________________________________
[EMAIL PROTECTED] mailing list
http://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to