try also this dfr$score<-factor(dfr$var3 %in% sort(unique(dfr$var3), decr=T)[1:2] * dfr$var3, labels=c("low", "mid", "high")) Hope this helps, Stefano -----Messaggio originale----- Da: r-help-bounces at stat.math.ethz.ch [mailto:r-help-bounces at stat.math.ethz.ch]Per conto di Lauri Nikkinen Inviato: venerd? 18 maggio 2007 15.15 A: r-help at stat.math.ethz.ch Oggetto: [R] Simple programming question Hi R-users, I have a simple question for R heavy users. If I have a data frame like this dfr <- data.frame(id=1:16, categ=rep(LETTERS[1:4], 4), var3=c(8,7,6,6,5,4,5,4,3,4,3,2,3,2,1,1)) dfr <- dfr[order(dfr$categ),] and I want to score values or points in variable named "var3" following this kind of logic: 1. the highest value of var3 within category (variable named "categ") -> "high" 2. the second highest value -> "mid" 3. lowest value -> "low" This would be the output of this reasoning: dfr$score <- factor(c("high","mid","low","low","high","mid","mid","low","high","mid","low","low","high","mid","low","low")) dfr The question is how I do this programmatically in R (i.e. if I have 2000 rows in my dfr)? I appreciate your help! Cheers, Lauri [[alternative HTML version deleted]] ______________________________________________ R-help at stat.math.ethz.ch 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.