[R] group data based on row value

arun smartpink111 at yahoo.com
Thu May 23 00:06:05 CEST 2013


Hi,
Try:
dat<- read.table(text="
Var
0
0.2
0.5
1
4
6
",sep="",header=TRUE) 

res1<-within(dat,group<-factor(findInterval(Var,c(-Inf,0.1,0.6),rightmost.closed=TRUE),labels=LETTERS[1:3]))
 res1
 # Var group
#1 0.0     A
#2 0.2     B
#3 0.5     B
#4 1.0     C
#5 4.0     C
#6 6.0     C

#or

res2<-within(dat,group<-factor(cut(Var,breaks=c(-Inf,0.1,0.6,Inf)),labels=LETTERS[1:3]))
 identical(res1,res2)
#[1] TRUE
A.K.


>hey, I want to divide my data into three groups based on the value in one 
>column with group name. 
>
>dat: 
>
>Var 
>0 
>0.2 
>0.5 
>1 
>4 
>6 
>
>I tried: 
>
>dat <- cbind(dat, group=cut(dat$Var, breaks=c(0.1,0.6))) 
>
>But it doesnt work, I want to group those <0.1 as group A, 0.1-0.6 as group 
>B, >0.6 as group C 
>
>Thanks for your help!



More information about the R-help mailing list