[R] find most repeated item from column in dataframe
Bill.Venables at csiro.au
Bill.Venables at csiro.au
Wed Aug 25 04:14:28 CEST 2010
Do you expect this to be easy? It may be, but I can't see a particularly graceful way to do it. Here is one possible solution.
> dat
StandID PlotNum HerbNum Woody
1 001 1 1 low
2 001 2 2 medium
3 001 3 1 low
4 001 4 3 low
5 001 5 1 high
6 001 6 2 medium
7 002 1 1 high
8 002 2 2 high
9 002 3 2 low
10 002 4 3 high
11 002 5 1 high
12 002 6 2 medium
> getMostCommon <- function(x) {
tx <- table(x)
m <- which(tx == max(tx))[1]
as(names(tx)[m], class(x))
}
> val <- unclass(by(dat[,-1], dat$StandID, function(x) lapply(x, getMostCommon)))
> (newDat <- cbind(StandID = names(val), as.data.frame(do.call(rbind, val))))
StandID PlotNum HerbNum Woody
001 001 1 1 low
002 002 1 2 high
This sort of gets you the answer, but it is not quite what it seems. One way to make it more manageable is
> for(j in 2:ncol(newDat)) newDat[[j]] <- unlist(newDat[[j]])
> newDat
StandID PlotNum HerbNum Woody
001 001 1 1 low
002 002 1 2 high
This is now a data frame with columns (more or less) what they appear to be.
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Randy Cass
Sent: Wednesday, 25 August 2010 11:33 AM
To: r-help at r-project.org
Subject: [R] find most repeated item from column in dataframe
R users,
I am trying to find some way to find the value of a column that is repeated
the most for each StandID of a dataframe. I have research methods online
and the help page, but have had no success in finding a solution. I have
tried using the table function but it returns items for the whole dataset
and not by the StandID. Any help will be appreciated. Thanks in advance.
R version 2.11.1
Windows 7
Dataframe is imported from text file
StandID PlotNum HerbNum Woody
001 1 1 low
001 2 2 medium
001 3 1 low
001 4 3 low
001 5 1 high
001 6 2 medium
002 1 1 high
002 2 2 high
002 3 2 low
002 4 3 high
002 5 1 high
002 6 2 medium
I would like to get the following from the dataframe
StandID HerbNum Woody
001 1 low
002 2 high
Thanks,
Randy
[[alternative HTML version deleted]]
______________________________________________
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