Hi,
You could also try ?ave()
dat$Age_group<-ave(dat$Age,dat$GENDER,FUN=function(x){cut(x,labels=1:10,breaks=quantile(x,seq(0,1,.1)),include.lowest=TRUE)})
?dat
#? GENDER Age Age_group
#1????? 2? 45???????? 1
#2????? 1? 58??????? 10
#3????? 1? 54???????? 1
#4????? 2? 71??????? 10
#5????? 2? 64???????? 5
A.K.
----- Original Message -----
From: Rui Barradas <ruipbarradas at sapo.pt>
To: R Kozarski <r.kozarski at gmail.com>
Cc: r-help at r-project.org
Sent: Friday, November 30, 2012 1:07 PM
Subject: Re: [R] subgroup-based quantiles
Hello,
If you want Age quantiles by gender, you have to split the data by
gender, apply the same code then recombine the result.
fun <- function(x){
? ? Age_group <- cut(x[, "Age"], labels=c(1:10),
? ? ? ? breaks=quantile(x[, "Age"], seq(0,1,.1)),
? ? ? ? include.lowest = TRUE)
? ? cbind(x, Age_group)
}
result <- do.call(rbind, lapply(split(dat, dat[, "GENDER"]), fun))
rownames(result) <- seq_len(nrow(result))
result
Hope this helps,
Rui Barradas
Em 30-11-2012 12:18, R Kozarski escreveu:
Dear R users,
given the patient sample with their Gender and Age
? ? ? ? ? GENDER Age
? ? [1,]? ? ? 2? 45
? ? [2,]? ? ? 1? 58
? ? [3,]? ? ? 1? 54
? ? [4,]? ? ? 2? 71
? ? [5,]? ? ? 2? 64
? ...
I would like to create an another column which groups the patients wrt
Gender specific Age quantiles, following methodology similar to:
Age_group <- cut(Age, labels=c(1:10), breaks=quantile(Age,
seq(0,1,.1)),include.lowest = TRUE)
The function above allows me to group only wrt Age quantiles.
Best, Robert
--
View this message in context: http://r.789695.n4.nabble.com/subgroup-based-quantiles-tp4651415.html
Sent from the R help mailing list archive at Nabble.com.