[R] Selecting row indices from a data.frame by a factor and simple calculation (miniumum)

Mikkel Grum mi2kelgrum at yahoo.com
Tue Sep 13 19:18:46 CEST 2011


Code <- c(rep("NY14/3070", 3), rep("NY14/5459", 2))
Code <- as.factor(Code)
absdiff <- c(2, 4, 1, 5, 7)
df <- data.frame(Code, absdiff)
which(
    paste(df$Code, df$absdiff) == 
    paste(
        aggregate(df$absdiff, by = list(df$Code), min)$Group.1,
        aggregate(df$absdiff, by = list(df$Code), min)$x
    )
)



----- Original Message -----
From: "Rawlins, Barry G." <bgr at bgs.ac.uk>
To: "r-help at r-project.org" <r-help at r-project.org>
Cc: 
Sent: Tuesday, September 13, 2011 11:31 AM
Subject: [R] Selecting row indices from a data.frame by a factor and simple calculation (miniumum)

Hello

I wish to extract the row indices from a data.frame in which a column contains numeric data by calculating the minimum value, but grouped on another column factor:

An example data.frame:

Code                absdiff
NY14/3070         2
NY14/3070         4
NY14/3070         1
NY14/5459         5
NY14/5459         7

So in this case the factor is Code and the numeric vector is absdiff

The query would return row indices 3 and 4 which have the minimum values for the factor.
I am sure it would involve some combination of which and tapply but cannot figure it out?

Many thanks, Barry

Dr Barry Rawlins
British Geological Survey
Keyworth
Nottingham
NG12 5GG
UK
Tel: 0115 9363140
Mob: 07884235473
homepage http://sites.google.com/site/barryrawlins/



-- 
This message (and any attachments) is for the recipient ...{{dropped:8}}

______________________________________________
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.




More information about the R-help mailing list