[R] Application of "merge" and "within"

peter dalgaard pdalgd at gmail.com
Wed Jun 1 10:45:37 CEST 2016


Notice that within-group processing is intended. I'd try

> first <- function(x)x[1]
> s  <- within(q, {bl <- ave(b, paste(G,a), FUN=first); db <- b - bl})

Or perhaps

q <- within(q, Ga <- paste(G,a))
tbl <- with(q, tapply(b, Ga, first))
s <- within(q, {bl <- tbl[Ga]; db <- b - bl})

-pd


On 28 May 2016, at 22:53 , Duncan Murdoch <murdoch.duncan at gmail.com> wrote:

> On 27/05/2016 7:00 PM, Santosh wrote:
>> Dear Rxperts!
>> 
>> Is there a way to compute relative values.. using within().. function?
>> 
>> Any assistance/suggestions are highly welcome!!
>> Thanks again,
>> Santosh...
>> ___________________________________________________________________
>> A sample dataset and the computation "outside" within()  function is shown..
>> 
>> q <- data.frame(GL = rep(paste("G",1:3,sep = ""),each = 50),
>>                G  = rep(1:3,each = 50),
>>                D = rep(paste("D",1:5,sep = ""),each = 30),
>>                a = rep(1:15,each = 10),
>>                t = rep(seq(10),15),
>>                b = round(runif(150,10,20)))
>> r <- subset(q,!duplicated(paste(G,a)),sel=c(G,a,b))
>> names(r)[3] <- "bl"
>> s <- merge(q,r)
>> s$db <- s$b-s$bl
>> 
>>> head(s,5)
>>    G  a GL  D  t  b bl db
>> 1   1  1 G1 D1  1 13 13  0
>> 2   1  1 G1 D1  2 16 13  3
>> 3   1  1 G1 D1  3 19 13  6
>> 4   1  1 G1 D1  4 12 13 -1
>> 5   1  1 G1 D1  5 19 13  6
> 
> Just use
> 
> s <- within(s, db <- b - bl)
> 
> Duncan Murdoch
> 
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-help mailing list