[R] select most frequent value in set of variables

Sam Dekeyser sam.dekeyser at gmail.com
Fri Aug 24 12:03:51 CEST 2012


Hi, 

Shortly after my first post I posted an answer including the fix I found; which seems to work. Through the archives I found that my code snippet got filtered out and appended as an attachment (which was not my intent).

This was my suggestion:

for(i in seq(length(ss$name))) {
	color <- names(which.max(table(c(ss$color1[i], ss$color2[i], ss$color3[i]))))
	
	if(is.null(color))
	{
		ss$color_med[i] <- NA
	}
	else 
	{
		ss$color_med[i] <- as.integer(color)
	}
}

Thank you for your suggestions!
Sam


Op 20-aug-2012, om 18:04 heeft arun het volgende geschreven:

> HI,
> 
> Slightly different way:
> unlist(lapply(apply(mat,1,count),function(x) max(x[2])))
>  #[1] 2 1 2 1 1 2 2 2 2 1 2 1 2 2 2 1 1 1 2 2
> 
> 
> 
> ----- Original Message -----
> From: PIKAL Petr <petr.pikal at precheza.cz>
> To: Sam Dekeyser <sam.dekeyser at gmail.com>; "r-help at r-project.org" <r-help at r-project.org>
> Cc: 
> Sent: Monday, August 20, 2012 10:08 AM
> Subject: Re: [R] select most frequent value in set of variables
> 
> Hi
> 
> It is really a typical example of a question which has probably very simple solution but hardly anybody can give you a rasonable answer.
> 
> How your data look like?
> What is the structure of your data?
> 
> set.seed(1)
> x<-sample(1:4, 60, replace=T)
> mat<-as.factor(x)
> dim(mat) <- c(20,3)
> 
>> sapply(apply(mat,1, table), max)
> [1] 2 1 2 1 1 2 2 2 2 1 2 1 2 2 2 1 1 1 2 2
>> names(sapply(apply(mat,1, table), which.max))
> [1] "4" "1" "3" "1" "1" "4" "1" "2" "3" "1" "2" "1" "2" "1" "4" "1" "2" "1" "3"
> [20] "2"
> 
> gives you the most frequent value in each row of matrix mat.
> 
> Petr
> 
> 
>> -----Original Message-----
>> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
>> project.org] On Behalf Of Sam Dekeyser
>> Sent: Monday, August 20, 2012 10:48 AM
>> To: r-help at r-project.org
>> Subject: [R] select most frequent value in set of variables
>> 
>> Hi,
>> 
>> I would like to select the most frequent value level in a set of three
>> variables.
>> 
>> Three different observators have judged hair color in study subjects.
>> Mostly they judge the same color, sometimes there is a slight
>> difference. I want to know what most of the observators have chosen (so
>> at least 2) from the 3 observations. E.g. If two out of three
>> observators decide the hair is black, then it's likely not to be brown.
>> 
>> Let's say that i have 3 variables: color1, color2, color3. Each have 4
>> possible levels (fair up to black, 1-4). I would like a new variable
>> containing this 'most frequent judgement'.
>> 
>> I have already searched through the knowledge base and many posts but I
>> haven't found what I'm looking for.
>> 
>> Is this possible?
>> 
>> Thank you in advance!
>> Sam
>> 
>> ______________________________________________
>> 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.
> 
> ______________________________________________
> 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