Re: [R] lookups and joins

2005-01-25 Thread roger bos
Paul,

You don't want to write you own function.  merge() will do that for
you very quickly and efficiently.  Just to elaborate on Mike's reply,
here is an example of how to use merge:

 test - merge(out, trt1m, by=gvkey)
 names(out)
[1] gvkeydatadate PriceFV   ER   Rank
 names(trt1m)
[1] gvkey trt1m
 names(test)
[1] gvkeydatadate PriceFV   ER   Rank trt1m   
 
gvkey is the column that is joined on and the new data frame (test)
has all the columns of both data frames.  Now you can subscript as
usual to get just the data you need.  Read ?merge to see what
all.x=TRUE does in case you need to use that.

Thanks,

Roger

On Mon, 24 Jan 2005 22:41:54 -, michael watson (IAH-C)
[EMAIL PROTECTED] wrote:
 All together now:
 
 ?merge
 
 :-)
 
 
 -Original Message-
 From:   [EMAIL PROTECTED] on behalf of Paul Sorenson
 Sent:   Mon 1/24/2005 10:34 PM
 To: r-help@stat.math.ethz.ch
 Cc:
 Subject:[R] lookups and joins
 I have some data coming from SQL sources that I wish to relate in various 
 ways.  For reasons only known to our IT people, this can't be done in SQL at 
 present.
 
 I am looking for an R'ish technique for looking up new columns on a data 
 frame.  As a simple, hardwired example I have tried the following:
 
 # This gives me two columns, one the lookup value and the second one
 # the result column, ie my lookup table.
 stcl = read.csv(stockclass.csv)
 stockclass = as.vector(stcl$stock_class)
 # This gives me what appears to be a dictionary or map
 names(stockclass) = as.vector(stcl$stock_group)
 
 getstockclass = function(stock_group) {
try(stockclass[[stock_group]], TRUE)
 }
 csg$stk_class=factor(sapply(csg$stock_group, getstockclass))
 
 I need the try since if there is a missing value I get an exception.
 
 I also tried something along the lines of (from memory):
 getstockclass = function(stock_group) {
stcl[which(stcl$stock_group == stock_group),]$stock_class
 }
 
 These work but I just wanted to check if there was an inbuilt way to do this 
 kind of thing in R?  I searched on join without much luck.
 
 Really what I would like is a generic function that:
- Takes 2 data frames,
- Some kind of specification on which column(s) to join
- Outputs the joined frames, or perhaps a vector which is an index 
 vector that I can use on the second data frame.
 
 I don't really want to reinvent SQL and my data sets are not huge.
 
 cheers
 
 __
 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
 
 __
 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


__
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


RE: [R] lookups and joins

2005-01-24 Thread michael watson \(IAH-C\)
All together now:

?merge

:-)


-Original Message-
From:   [EMAIL PROTECTED] on behalf of Paul Sorenson
Sent:   Mon 1/24/2005 10:34 PM
To: r-help@stat.math.ethz.ch
Cc: 
Subject:[R] lookups and joins
I have some data coming from SQL sources that I wish to relate in various ways. 
 For reasons only known to our IT people, this can't be done in SQL at present.

I am looking for an R'ish technique for looking up new columns on a data frame. 
 As a simple, hardwired example I have tried the following:

# This gives me two columns, one the lookup value and the second one
# the result column, ie my lookup table.
stcl = read.csv(stockclass.csv)
stockclass = as.vector(stcl$stock_class)
# This gives me what appears to be a dictionary or map
names(stockclass) = as.vector(stcl$stock_group)

getstockclass = function(stock_group) {
try(stockclass[[stock_group]], TRUE)
}
csg$stk_class=factor(sapply(csg$stock_group, getstockclass))

I need the try since if there is a missing value I get an exception.

I also tried something along the lines of (from memory):
getstockclass = function(stock_group) {
stcl[which(stcl$stock_group == stock_group),]$stock_class
}

These work but I just wanted to check if there was an inbuilt way to do this 
kind of thing in R?  I searched on join without much luck.

Really what I would like is a generic function that:
- Takes 2 data frames,
- Some kind of specification on which column(s) to join
- Outputs the joined frames, or perhaps a vector which is an index 
vector that I can use on the second data frame.

I don't really want to reinvent SQL and my data sets are not huge.

cheers

__
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

__
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