Skip to content

split & rbind (cast) dataframe

4 messages · Johannes Radinger, Ista Zahn, James +1 more

#
Hi,

I would like to split dataframe based on one colum and want
to connect the two dataframes by rows (like rbind). Here a small example:

# The orgininal dataframe
df1 <- data.frame(col1 = c("A","A","B","B"),col2 = c(1:4), col3 = c(1:4))

# The datafame how it could look like
df2 <- data.frame(A.col2 = c(1,2), A.col3 = c(1,2), B.col2 = c(3,4),
B.col3 = c(3,4))

I think I already did a similar procedure sometime ago with the
cast() command from reshape-package but I cant remember correctly...
...maybe someone can point me to the correct formula...

Best

/johannes
#
Hi Johannes,

Your example is tricky because the original df1 does not contain id
columns that identify each cell in df2. If you want to use the
reshape2 package for this I think you have to add a second id
variable:

df1 <- data.frame(col1 = c("A","A","B","B"),col2 = c(1:4), col3 = c(1:4))

library(reshape2)
library(plyr)

df1 <- ddply(df1,
             "col1",
             transform,
             col0 = 1:length(col1))

tmp <- melt(df1, id.vars = c("col0","col1"))
dcast(tmp, col0 ~ col1 + variable)

Best,
Ista

On Fri, Jan 11, 2013 at 7:46 AM, Johannes Radinger
<johannesradinger at gmail.com> wrote:
#
HI,
May be this also works for you:
?do.call(cbind,by(df1[,-1],df1[,1],function(x) x))
?# A.col2 A.col3 B.col2 B.col3
#1????? 1????? 1????? 3????? 3
#2????? 2????? 2????? 4????? 4
A.K.




----- Original Message -----
From: Johannes Radinger <johannesradinger at gmail.com>
To: r-help at r-project.org
Cc: 
Sent: Friday, January 11, 2013 7:46 AM
Subject: [R] split & rbind (cast) dataframe

Hi,

I would like to split dataframe based on one colum and want
to connect the two dataframes by rows (like rbind). Here a small example:

# The orgininal dataframe
df1 <- data.frame(col1 = c("A","A","B","B"),col2 = c(1:4), col3 = c(1:4))

# The datafame how it could look like
df2 <- data.frame(A.col2 = c(1,2), A.col3 = c(1,2), B.col2 = c(3,4),
B.col3 = c(3,4))

I think I already did a similar procedure sometime ago with the
cast() command from reshape-package but I cant remember correctly...
...maybe someone can point me to the correct formula...

Best

/johannes

______________________________________________
R-help at r-project.org 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.