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
I found a solution to this problem myself by searching further and experimenting
with some functions.
I ended up with a for-loop which iterates over the cases. It generates a table
per case, and selects the most frequent (i.e. the value corresponding with the
highest frequency) choice, which checked to be non-NA and saved to the new
variable. I still haven't found a way to re-factor them using the same
attributes as the original color-variables... Anyone an idea?
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)
}
}
Greetings!
Sam
Op 20-aug-2012, om 10:48 heeft Sam Dekeyser het volgende geschreven:
> 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
>
>
>
[[alternative HTML version deleted]]
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.
On 08/20/2012 06:48 PM, Sam Dekeyser wrote:> 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? >Hi Sam, Are you looking for the Mode function in the prettyR package? Jim