[R] Split column

Adaikalavan Ramasamy a.ramasamy at imperial.ac.uk
Tue Nov 24 18:53:24 CET 2009


Not very elegant but this does the trick:

df <- cbind( var1=c(1,3,2,1,2), var2=c(3,1,1,2,3) )

out <- df
out[ which(df==1, arr.ind=T) ] <- "1&1"
out[ which(df==2, arr.ind=T) ] <- "1&2"
out[ which(df==3, arr.ind=T) ] <- "2&2"

outlist <- apply(out, 2, strsplit, split="&")
do.call( "cbind.data.frame", lapply( outlist, do.call, what="rbind" ) )
   var1.1 var1.2 var2.1 var2.2
1      1      1      2      2
2      2      2      1      1
3      1      2      1      1
4      1      1      1      2
5      1      2      2      2

Please check.

Regards, Adai



Lisaj wrote:
> Hello, R users,
> 
> I have a dataset that looks like this: 
> 
> id   var1   var2   
>  1      1      3   
>  2      3      1   
>  3      2      1   
>  4      1      2   
>  5      2      3   
> 
> I want to split one column to two columns with 1 = 1 and 1, 2 = 1 and 2, 3 =
> 2 and 2: 
> 
> id   var1.1  var1.2  var2.1  var2.2 
> 1         1       1       2       2 
> 2         2       2       1       1
> 3         1       2       1       1
> 4         1       1       1       2
> 5         1       2       2       2
> 
> Can anyone please help how to get this done? Thanks a lot in advance
> 
> Lisa
>




More information about the R-help mailing list