[R] Defining categories

PIKAL Petr petr.pikal at precheza.cz
Thu Oct 25 11:29:06 CEST 2012


Hi

Maybe also findInterval can be used

dat1$cat<-findInterval(dat1$V1, 1:6, rightmost.closed = T, all.inside = T)

It is said to be more efficient than cut.

Regards
Petr



> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of arun
> Sent: Thursday, October 25, 2012 3:32 AM
> To: Jorge I Velez; bibek sharma
> Cc: R help
> Subject: Re: [R] Defining categories
> 
> Hi,
>  (Jorge: Thanks for the suggestion.)
> cut? will be much easier.
> 
> dat1<-read.table(text="
> 2.880556
> 0.616667
> 5.083333
> 0.858333
> 0.466667
> 2.936111
> 4.258333
> 0.258333
> 2.033333
> 2.583333
> 1.088889
> 0.447222
> 1.872222
> 0.080556
> 4.033333
> 4.116667
> 1.633333
> 2.147222
> ",sep="",header=FALSE)
>  dat1$Categ<-cut(dat1$V1,breaks=c(0,1,2,3,4,5,6))
> #Either
> 
> library(car)
> dat1$Categ<-
> recode(dat1$Categ,"'(0,1]'=1;'(1,2]'=2;'(2,3]'=3;'(3,4]'=4;'(4,5]'=5;'(
> 5,6]'=6")
> #or
> dat1$Categ<-as.numeric(gsub(".*\\,(\\d+).*","\\1",dat1$Categ))
> #formats the Categ column.
> head(dat1)
> #        V1 Categ
> #1 2.880556     3
> #2 0.616667     1
> #3 5.083333     6
> #4 0.858333     1
> #5 0.466667     1
> #6 2.936111     3
> A.K.
> 
> 
> 
> 
> 
> 
> ________________________________
> From: Jorge I Velez <jorgeivanvelez at gmail.com>
> To: arun <smartpink111 at yahoo.com>
> Cc: bibek sharma <mbhpathak at gmail.com>; R help <r-help at r-project.org>
> Sent: Wednesday, October 24, 2012 7:27 PM
> Subject: Re: [R] Defining categories
> 
> 
> See ?cut for a simpler way of doing this.
> HTH,
> Jorge.-
> 
> 
> 
> On Thu, Oct 25, 2012 at 10:02 AM, arun <> wrote:
> 
> Hi,
> >May be this:
> >dat1<-read.table(text="
> >
> >2.880556
> >0.616667
> >5.083333
> >0.858333
> >0.466667
> >2.936111
> >4.258333
> >0.258333
> >2.033333
> >2.583333
> >1.088889
> >0.447222
> >1.872222
> >0.080556
> >4.033333
> >4.116667
> >1.633333
> >2.147222
> >",sep="",header=FALSE)
> >dat1$category<-ifelse(dat1$V1<=1 &dat1$V1>0,1,ifelse(dat1$V1>1 &
> dat1$V1<=2,2,ifelse(dat1$V1>2&dat1$V1<=3,3,ifelse(dat1$V1>3&dat1$V1<=4,
> 4,ifelse(dat1$V1>4&dat1$V1<=5,5,6)))))
> >
> >
> > head(dat1)
> >#        V1 category
> >#1 2.880556        3
> >#2 0.616667        1
> >#3 5.083333        6
> >#4 0.858333        1
> >#5 0.466667        1
> >#6 2.936111        3
> >A.K.
> >
> >
> >
> >
> >----- Original Message -----
> >From: bibek sharma <>
> >To: r-help at r-project.org
> >Cc:
> >Sent: Wednesday, October 24, 2012 6:52 PM
> >Subject: [R] Defining categories
> >
> >Hello R user,
> >
> >Data below represent year in decimal. I would like to catagorize it
> >in such a way that any valye [0,1] goes to catagory 1 , (1,2] goes to
> >catagory 2 and so on..
> >Any suggestion how it can be done with if else statement or any other
> way?
> >
> >2.880556
> >0.616667
> >5.083333
> >0.858333
> >0.466667
> >2.936111
> >4.258333
> >0.258333
> >2.033333
> >2.583333
> >1.088889
> >0.447222
> >1.872222
> >0.080556
> >4.033333
> >4.116667
> >1.633333
> >2.147222
> >
> >Thank you for  your help.
> >Bibek
> >
> >______________________________________________
> >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.
> >
> 
> ______________________________________________
> 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