[R] replacing NA's with 0 in a dataframe for specified columns

Chuck Cleland ccleland at optonline.net
Wed Sep 15 21:12:26 CEST 2004


mydata <- data.frame(a = c(0,1,2,NA), b = c(0,NA,1,2), c = c(NA, 0, 1, 2))

mydata
    a  b  c
1  0  0 NA
2  1 NA  0
3  2  1  1
4 NA  2  2

mydata[,c("a", "c")] <-
apply(mydata[,c("a","c")], 2, function(x){replace(x, is.na(x), 0)})

mydata
   a  b c
1 0  0 0
2 1 NA 0
3 2  1 1
4 0  2 2

David Kane wrote:
> I know that there must be a cool way of doing this, but I can't think
> of it. Let's say I have an dataframe with NA's.
> 
> 
>>x <- data.frame(a = c(0,1,2,NA), b = c(0,NA,1,2), c = c(NA, 0, 1, 2))
>>x
> 
>    a  b  c
> 1  0  0 NA
> 2  1 NA  0
> 3  2  1  1
> 4 NA  2  2
> 
> 
> I know it is easy to replace all the NA's with zeroes.
> 
> 
>>x[is.na(x)] <- 0
>>x
> 
>   a b c
> 1 0 0 0
> 2 1 0 0
> 3 2 1 1
> 4 0 2 2
> 
> 
> But how do I do this for just columns a and c, leaving the NA in
> column b alone?
> 
> Thanks,
> 
> Dave Kane
> 
> 
>>R.version
> 
>          _                
> platform i686-pc-linux-gnu
> arch     i686             
> os       linux-gnu        
> system   i686, linux-gnu  
> status                    
> major    1                
> minor    9.1              
> year     2004             
> month    06               
> day      21               
> language R                
> 
> 
> ______________________________________________
> 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
> 

-- 
Chuck Cleland, Ph.D.
NDRI, Inc.
71 West 23rd Street, 8th floor
New York, NY 10010
tel: (212) 845-4495 (Tu, Th)
tel: (732) 452-1424 (M, W, F)
fax: (917) 438-0894




More information about the R-help mailing list