[R] Factor levels.
    Rolf Turner 
    r.turner at auckland.ac.nz
       
    Wed Oct  3 21:20:18 CEST 2007
    
    
  
On 3/10/2007, at 5:48 PM, Peter Dalgaard wrote:
> Rolf Turner wrote:
>> I have factors with levels ``Unit", "Achieved", and "Scholarship";  
>> I  wish to replace these with
>> "U", "A", and "S".
>>
>> So I do
>>
>> 	fff <- factor(fff,labels=c("U","A","S"))
>>
>> This works as long as all of the levels are actually present in  
>> the  factor.  But if ``Scholarship'' is absent
>> (as if often is) then I get an error.
>>
>> I can do a workaround such as
>>
>> 	fff <- factor(c("U","A","S")[fff],levels=c("U","A","S"))
>>
>> but this seems kludgy to me.
>>
> Does it even work? (What if it is the first or the 2nd level that  
> is absent?
	Yes it works.  What's the problem?
	To beat it to death:  if the second level of fff is absent then fff  
will consist entirely of 1's and 3's,
	and so c("U","A","S")[fff] will consist entirely of U's and S's.  I  
can then set the levels to be
	c("U","A","S") and get what I want.
	Note that if I just did
		fff <- factor(c("U","A","S")[fff])
	in these circumstances, then I would get a factor whose levels were c 
("U","S") which is NOT what I want.
	(I.e. I want the levels always to be c("U","A","S") irrespective of  
what levels are actually present in the factor.)
> The canonical way is
>
> factor(fff, levels=c("Unit", "Achieved", "Scholarship"), labels=c 
> ("U","A","S"))
	Right.  That is indeed sexier.  Thanks.
			cheers,
				Rolf
######################################################################
Attention:\ This e-mail message is privileged and confidenti...{{dropped}}
    
    
More information about the R-help
mailing list