Sorry about the formatting in that previous email.  Here it is
again, hopefully with the correct formatting this time.

Assuming that the data frame is called m, you can 
- split the data frame by the values of siteid and date
- apply a function to create the new data frame for each such group and 
- use rbind to put it back together like this: 

fn <- function(x) {
  y <- t(x[,4:5])
  data.frame( siteid=x[1,1], date=x[1,2], name=colnames(x)[4:5], x01=y[,1], x02=y[,2], 
x03=y[,3] )
 }
m <- do.call( "rbind", lapply(split(m,list(m$siteid,m$date)),fn) )

If order matters, add this:

m <- m[order(m$siteid,m$date),]





 --- On Mon 09/29,  < [EMAIL PROTECTED] > wrote:
From:  [mailto: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Date: Mon, 29 Sep 2003 13:15:36 -0400
Subject: [R] Data frame transpose

<br><br><br><br>Hi All,<br><br>I want to ask if there is a transpose function for data 
frame like the<br>procedure of transpose in SAS? Because I want to partially transpose 
a<br>data frame which contains 5 columns (siteid, date, time, obs, mod), what<br>I 
want to do is to put time as the column variables along with siteid,<br>and date, and 
put obs and mod in the row names. specifically to<br>transpose a data 
frame:<br><br>siteid     date    time   obs     mod<br>    A       7/8        01       
2         5<br>    A       7/8        02        3        8<br>    A       7/8        
03        5        8<br>     A       7/9       01       3          6<br>   A         
7/9      02        5          8<br>   A         7/9       03       6           7<br>   
                    ......<br>   B         7/8      01          4         7<br>    B   
     7/8      02        7        19<br>   B         7/8     03         4        9<br>  
                    ......<br><br>To<br><br>siteid    date!
     name     01    02     03   ....<br>A              7/8       obs       2      3    
    5<br>A              7/8       mod      5      8        8<br>A              7/9     
  obs       3      5         6<br>A              7/9       mod      6      8        
7<br>                 .......<br>B              7/8        obs       4      7        
4<br>B              7/8        mod      7      19      9<br>                
........<br><br><br>Thank you very 
much!<br><br>Dave<br><br>______________________________________________<br>[EMAIL 
PROTECTED] mailing list<br>https://www.stat.math.ethz.ch/mailman/listinfo/r-help<br>

_______________________________________________
No banners. No pop-ups. No kidding.
Introducing My Way - http://www.myway.com

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to