Message-ID: <4B0C1D94.8070400@imperial.ac.uk>
Date: 2009-11-24T17:53:24Z
From: Adaikalavan Ramasamy
Subject: Split column
In-Reply-To: <26498361.post@talk.nabble.com>
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
>