From: YIHSU CHEN <yschen_at_jhu.edu>

Date: Wed 17 May 2006 - 00:31:36 EST

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed May 17 00:40:25 2006

Date: Wed 17 May 2006 - 00:31:36 EST

Dear Folks:

My recent question concerning split data.frame has been solved using both following approaches. (Question is listed at the end.)

solution 1: Try melt from the reshape package (by Gabor)

library(reshape)

melt(DF, 1:2)

You may may need to resort it if the order is important.

solution 2: good for large dataset (by Robert) "If your data set is really big, i.e. bigger than R can handle in memory, then you might want to write the data frame to disk, manipulate it there, and then read it back in"

myDF <- data.frame(V1=rep("A",3), V2=c("B","D","C"), A1=c
(1.2,1.2,2.4), A2=c(2,4,2.2) )

write.table(subset(myDF,select=c(V1,V2,A1)), file="foo.txt",

row.name=FALSE, col.names = FALSE)

write.table(subset(myDF,select=c(V1,V2,A2)), file="foo.txt",

row.name=FALSE, col.names = FALSE, append= TRUE) newDF <- read.table("foo.txt", col.names=c("V1","V2","x")) newDF[1:10,]

There's also the operating system solution if using Linux or Cywin/ Windows:

myDF <- data.frame(V1=rep("A",3), V2=c("B","D","C"), A1=c
(1.2,1.2,2.4), A2=c(2,4,2.2) )

write.table(myDF, file="foo.txt", sep="\t", na="",

quote=FALSE, row.names = FALSE, col.names=FALSE) system("{ cut -f1,2,3 foo.txt ; cut -f1,2,4 foo.txt ; } > bar.txt") newDF <- read.table("bar.txt", col.names=c("V1","V2","x")) newDF[1:10,]

On 5/15/06, YIHSU CHEN <yschen@jhu.edu> wrote:

> Dear R folks:

*>
**> I wonder anyone has a elegent way of doing what I need to do.
**>
**> I have a data frame called with four columns: V1, V2, A1 and A2:
**>
**> V1 V2 A1 A2
**> A B 1.2 2.0
**> A D 1.2 4.0
**> A C 2.4 2.2
**>
**> What I need to do is to convert it into the following data frame with a new column x, where x is just the stacked up of A1 and A2 placed with respective V1 and V2 in the first two columns:
**>
**> V1 V2 x
**> A B 1.2
**> A B 2.0
**> A D 1.2
**> A D 4.0
**> A C 2.4
**> A C 2.2
*

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed May 17 00:40:25 2006

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.1.8, at Wed 17 May 2006 - 02:10:02 EST.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*