[R] Help with for/if loop

David Winsemius dwinsemius at comcast.net
Fri Apr 24 04:26:51 CEST 2009


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




More information about the R-help mailing list