I have a set of data that includes various data columns. One if the survival time and another if a continuous variable of ages. I want to put the ages into intervals so that I can then perform the Kalpan Meier test. I am trying to use the following code to build a column with the age group numbers in agecatagory<-c( ) for (i in 1:137) { { if(age[i]<=46) {agecat[i]<-1} if(age[i]>46 & age[i]<= 58) {agecat[i]<-2} if(age[i]>58) {agecat[i]<-3} } agecatagory<-c(agecatagory, agecat[i]) } I have been getting various errors for various things and have finally got it so that only one error comes up Error in if (age[i] <= 46) { : missing value where TRUE/FALSE needed Could anyone pleaseeeeeee shed some light on this for me and tell em where I am going wrong. I am sure it is just a minor thing but I cant for the life of me figure it out! Your replies will be very much appreciated! Hollie -- View this message in context: http://www.nabble.com/Help-with-for-if-loop-tp23207428p23207428.html Sent from the R help mailing list archive at Nabble.com.
Dear Hollie, ifelse() is one alternative in this particular case: # Some data age<- c(46,47,43,46,47,59,50,54,59,60) ifelse(age<=46, 1, ifelse( age>46 & age<=58 , 2, 3) ) [1] 1 2 1 1 2 3 2 2 3 3 See ?ifelse for more details. HTH, Jorge On Thu, Apr 23, 2009 at 8:07 PM, Giggles_Fairy <giggles_fairy16@hotmail.com>wrote:> > I have a set of data that includes various data columns. One if the > survival > time and another if a continuous variable of ages. I want to put the ages > into intervals so that I can then perform the Kalpan Meier test. I am > trying > to use the following code to build a column with the age group numbers in > > agecatagory<-c( ) > for (i in 1:137) > { > { > if(age[i]<=46) {agecat[i]<-1} > if(age[i]>46 & age[i]<= 58) {agecat[i]<-2} > if(age[i]>58) {agecat[i]<-3} > } > agecatagory<-c(agecatagory, agecat[i]) > } > > I have been getting various errors for various things and have finally got > it so that only one error comes up > Error in if (age[i] <= 46) { : missing value where TRUE/FALSE needed > > Could anyone pleaseeeeeee shed some light on this for me and tell em where > I > am going wrong. I am sure it is just a minor thing but I cant for the life > of me figure it out! > > Your replies will be very much appreciated! > > Hollie > -- > View this message in context: > http://www.nabble.com/Help-with-for-if-loop-tp23207428p23207428.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@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. >[[alternative HTML version deleted]]
or perhaps agec <- 0*age age[age<=46] <- 1 age[age>46 & age<=58 <- 2 age[age>58] <- 3 or perhaps a one liner cut(x = age, breaks= c(0,46, 58,Inf), labels = c(1,2,3)) On Apr 24, 11:24?am, Jorge Ivan Velez <jorgeivanve... at gmail.com> wrote:> Dear Hollie, > ifelse() is one alternative in this particular case: > > # Some data > age<- c(46,47,43,46,47,59,50,54,59,60) > > ifelse(age<=46, 1, > ? ? ? ? ifelse( age>46 & age<=58 , 2, 3) ) > [1] 1 2 1 1 2 3 2 2 3 3 > > See ?ifelse for more details. > > HTH, > > Jorge > > On Thu, Apr 23, 2009 at 8:07 PM, Giggles_Fairy > <giggles_fair... at hotmail.com>wrote: > > > > > > > I have a set of data that includes various data columns. One if the > > survival > > time and another if a continuous variable of ages. I want to put the ages > > into intervals so that I can then perform the Kalpan Meier test. I am > > trying > > to use the following code to build a column with the age group numbers in > > > agecatagory<-c( ) > > for (i in 1:137) > > { > > { > > if(age[i]<=46) ?{agecat[i]<-1} > > if(age[i]>46 & age[i]<= 58) {agecat[i]<-2} > > if(age[i]>58) {agecat[i]<-3} > > } > > agecatagory<-c(agecatagory, agecat[i]) > > } > > > I have been getting various errors for various things and have finally got > > it so that only one error comes up > > Error in if (age[i] <= 46) { : missing value where TRUE/FALSE needed > > > Could anyone pleaseeeeeee shed some light on this for me and tell em where > > I > > am going wrong. I am sure it is just a minor thing but I cant for the life > > of me figure it out! > > > Your replies will be very much appreciated! > > > Hollie > > -- > > View this message in context: > >http://www.nabble.com/Help-with-for-if-loop-tp23207428p23207428.html > > Sent from the R help mailing list archive at Nabble.com. > > > ______________________________________________ > > R-h... 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. > > ? ? ? ? [[alternative HTML version deleted]] > > ______________________________________________ > R-h... at r-project.org mailing listhttps://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
On Apr 23, 2009, at 8:07 PM, Giggles_Fairy wrote:> > I have a set of data that includes various data columns. One if the > survival > time and another if a continuous variable of ages. I want to put the > ages > into intervals so that I can then perform the Kalpan Meier test. I > am trying > to use the following code to build a column with the age group > numbers in > > agecatagory<-c( ) > for (i in 1:137) > { > { > if(age[i]<=46) {agecat[i]<-1} > if(age[i]>46 & age[i]<= 58) {agecat[i]<-2} > if(age[i]>58) {agecat[i]<-3} > } > agecatagory<-c(agecatagory, agecat[i]) > }My help with your loop will be to eliminate it. Try: # age= sample(20:120, 100, replace=T) # use your own data agecatagory<- cut(age, breaks=c(0, 46, 58, max(age) ) ) table(agecatagory) #agecatagory # (0,46] (46,58] (58,120] #agecatagory is now a factor # 31 9 60 age.n <- as.numeric(agecatagory) table(age.n) #age.n # 1 2 3 #31 9 60 so a one liner would be: agecatagory <- as.numeric( cut(age, breaks=c(0, 46, 58, max(age) ) ) )> > I have been getting various errors for various things and have > finally got > it so that only one error comes up > Error in if (age[i] <= 46) { : missing value where TRUE/FALSE needed > > Could anyone pleaseeeeeee shed some light on this for me and tell em > where I > am going wrong. I am sure it is just a minor thing but I cant for > the life > of me figure it out! >David Winsemius, MD Heritage Laboratories West Hartford, CT