[R] categorical column to numeric column

Duncan Murdoch murdoch at stats.uwo.ca
Mon Feb 19 15:11:52 CET 2007


On 2/19/2007 8:36 AM, Shubha Vishwanath Karanth wrote:
> Hi R,
> 
>  
> 
> Let 'dd' be a data frame given as:
> 
>  
> 
> dd=data.frame(aa=c("a","a","b","a","b","b"),bb=c(1,1,1,2,3,4))
> 
>  
> 
> Now I want to create a column 'g' such that if dd$aa=a then dd$g=1 else
> dd$g= -1 .
> 
>  
> 
> So, I gave the below syntax:
> 
>  
> 
> if((dd$aa)=="a") dd$g=1 else dd$g= -1

if() looks at just the first entry; it's designed for flow of control 
rather than vectorized calculations.  You want ifelse():

ifelse( dd$aa == "a", 1, -1)

Duncan Murdoch
>  
> 
> But I get the error message as:
> 
> Warning message: 
> 
> the condition has length > 1 and only the first element will be used in:
> if ((dd$aa) == "a") dd$g = 1 else dd$g = -1 
> 
>  
> 
> and dd=
> 
>  
> 
>> dd
> 
>   aa bb g
> 
> 1  a  1 1
> 
> 2  a  1 1
> 
> 3  b  1 1
> 
> 4  a  2 1
> 
> 5  b  3 1
> 
> 6  b  4 1
> 
>> 
> 
>  
> 
> Please let me know what is the error I am doing?
> 
>  
> 
>  
> 
>  
> 
>  
> 
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> 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
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list