Skip to content

Defining categories

8 messages · Jorge I Velez, PIKAL Petr, arun +1 more

#
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
#
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 <mbhpathak at gmail.com>
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.
#
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.
#
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
#
Thank you Dr. Pikal for this alternative.
Best,
Jorge.-

Sent from my phone. Please excuse my brevity and misspelling.
On Oct 25, 2012, at 8:29 PM, PIKAL Petr <petr.pikal at precheza.cz> wrote:

            
#
HI Petr,

Thanks for sharing the function.? True, very efficient than cut.

dat1$cat<-findInterval(dat1$V1, 1:6, rightmost.closed = T, all.inside = T)
????????????????????????????????????????????????? ^^^
?#? May be the interval is 0:6.
dat1$cat1<-findInterval(dat1$V1, 1:6, rightmost.closed = T, all.inside = T)
?dat1$cat2<-findInterval(dat1$V1, 0:6, rightmost.closed = T, all.inside = T)
?head(dat1)
#??????? V1 cat1 cat2
#1 2.880556??? 2??? 3
#2 0.616667??? 1??? 1
#3 5.083333??? 5??? 6
#4 0.858333??? 1??? 1
#5 0.466667??? 1??? 1
#6 2.936111??? 2??? 3
A.K.




----- Original Message -----
From: PIKAL Petr <petr.pikal at precheza.cz>
To: arun <smartpink111 at yahoo.com>; Jorge I Velez <jorgeivanvelez at gmail.com>; bibek sharma <mbhpathak at gmail.com>
Cc: R help <r-help at r-project.org>
Sent: Thursday, October 25, 2012 5:29 AM
Subject: RE: [R] Defining categories

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
1 day later
#
Thank you all for your suggestions. It really helped me a lot.
Best,
Bibek
On Thu, Oct 25, 2012 at 4:44 AM, arun <smartpink111 at yahoo.com> wrote: