[R] Data frame self-join with no duplicates

jim holtman jholtman at gmail.com
Mon Sep 27 14:56:29 CEST 2010


try sqldf:

> require(sqldf)
> x <- read.table(textConnection("Year    Price
+ 2001    10
+ 2002    20
+ 2003    30"), as.is=TRUE, header=TRUE)
> sqldf("select a.*, b.*
+     from x as a, x as b
+     where a.Year > b.Year", method='raw')
  Year Price Year Price
1 2002    20 2001    10
2 2003    30 2001    10
3 2003    30 2002    20
>



On Mon, Sep 27, 2010 at 7:29 AM, Xin Zhang <xin.zhang at gmail.com> wrote:
> Suppose I have the following data frame (df):
>
> Year    Price
> -------------------
> 2001    10
> 2002    20
> 2003    30
>
> I would like to produce another data frame like this:
>
> a.Year    a.Price    b.Year    b.Price
> ----------------------------------------------------
> 2002    20    2001    10
> 2003    30    2001    10
> 2003    30    2002    20
>
> In SQL, this can be done as
>
> select a.*, b.*
> from df as a, df as b
> where a.Year > b.Year
>
> How do I do this efficiently in R?
>
> Many thanks.
>
> ______________________________________________
> 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.
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem that you are trying to solve?



More information about the R-help mailing list