[R] Break up a data frame

David Winsemius dwinsemius at comcast.net
Thu Mar 20 15:01:37 CET 2008


"Ravi S. Shankar" <ravis at ambaresearch.com> wrote in
news:A36876D3F8A5734FA84A4338135E7CC3033BE60E at BAN-MAILSRV03.Amba.com: 

> Hi R users,
> 
>  
> 
> I have a dataframe in the below format 
> 
>             xyz       01/03/2007        15.25                USD
> 
>             xyz       01/04/2007        15.32                USD
> 
>             xyz       01/02/2008        23.22                USD
> 
>             abc       01/03/2007        45.2                  EUR
> 
>             abc       01/04/2007        45.00                EUR
> 
>             abc       01/02/2008        68.33                EUR
> 
>  
> 
> I want to change the above data into the below format
> 
>  
> 
>  
> 
>             xyz       01/03/2007        15.25                USD    
>             abc 
> 01/03/2007        45.2                  EUR
> 
>             xyz       01/04/2007        15.32                USD    
>             abc 
> 01/04/2007        45.00                EUR
> 
>             xyz       01/02/2008        23.22                USD    
>             abc 
> 01/02/2008        68.33                EUR
> 
>  

Seeing what appeared to be wordwrap, I interpreted your request as asking 
for display of "xyz" rows adjacent to "abc" rows. If that is the case, 
then this seems to work for the toy example:

> xz <- read.table("clipboard")
> xz
   V1         V2    V3  V4
1 xyz 01/03/2007 15.25 USD
2 xyz 01/04/2007 15.32 USD
3 xyz 01/02/2008 23.22 USD
4 abc 01/03/2007 45.20 EUR
5 abc 01/04/2007 45.00 EUR
6 abc 01/02/2008 68.33 EUR

> cbind(xz[xz$V1=="xyz",],xz[xz$V1=="abc",])
   V1         V2    V3  V4  V1         V2    V3  V4
1 xyz 01/03/2007 15.25 USD abc 01/03/2007 45.20 EUR
2 xyz 01/04/2007 15.32 USD abc 01/04/2007 45.00 EUR
3 xyz 01/02/2008 23.22 USD abc 01/02/2008 68.33 EUR

If it was instead a request for USD next to EUR, then the needed 
modifications should be obvious.

-- 
David Winsemius



More information about the R-help mailing list