[R] coalesce columns within a data frame

Duncan Murdoch murdoch at stats.uwo.ca
Wed Oct 22 17:26:35 CEST 2008


On 10/22/2008 11:21 AM, Ivan Alves wrote:
> Dear all,
> 
> I searched the mail archives and the R site and found no guidance  
> (tried "merge", "cbind" and terms like "coalesce" with no success).   
> There surely is a way to coalesce (like in SQL) columns in a  
> dataframe, right?  For example, I would like to go from a dataframe  
> with two columns to one with only one as follows:
> 
> From
> 
> Name.x Name.y
> nx1 ny1
> nx2 NA
> NA ny3
> NA NA
> ...
> 
> To
> 
> Name
> nx1
> nx2
> ny3
> NA
> ...
> 
> where column Name.x is taken if there is a value, and if not then  
> column Name.y
> 
> Any help would be appreciated

I don't know of any special function to do that, but ifelse() can handle 
it easily:

Name <- ifelse(is.na(Name.x), Name.y, Name.x)

(If those are columns of a dataframe named df, you'd prefix each column 
name by df$, or do

within(df, Name <- ifelse(is.na(Name.x), Name.y, Name.x))

Duncan Murdoch



More information about the R-help mailing list