Skip to content
Prev 201472 / 398506 Next

Split column

On Nov 24, 2009, at 12:53 PM, Adaikalavan wrote:

            
df <- data.frame(id=1:5, df)

data.frame(id=df$id,
            var1.1 = (df$var1<3) + 2*(df$var1==3),  # 1 for < 3;  2  
for 3
             var1.2 = (df$var1==1) + 2*(df$var1>=2), # 1 for =1;   2  
otherwise
               var2.1 = (df$var2<3) + 2*(df$var2==3),  # lather, rinse,
                var2.2 = (df$var2==1) + 2*(df$var2>=2) ) # repeat

Offered not for its superior readability, since in that respect it is  
inferior to Ramasamy's solution below, but rather for possibility that  
it may run faster.