0

I'm a beginner in r I have to find the range of a number in TIS column and update another column. I'm using below code but its extremely slow. Any thoughts on how to improve it?

table name : data

    for (i in 1:nrow(data)) {
    if (data$TIS[i] > 100)
    data$test[i] <- ">100" 
    else if (data$TIS[i] > 60 & data$TIS[i] <=100)  
    data$test[i] <- "61-100" 
    else if (data$TIS[i] > 48 & data$TIS[i] <=60) 
    data$test[i] <- "49-60" 
    else if (data$TIS[i] > 36 & data$TIS[i] <=48) 
    data$test[i] <- "37-48" 
    else if (data$TIS[i] > 24 & data$TIS[i] <=36) 
    data$test[i] <- "25-36" 
    else if (data$TIS[i] > 12 & data$TIS[i] <=24) 
    data$test[i] <- "13-24" 
    else if (data$TIS[i] > 3 & data$TIS[i] <=12) 
    data$test[i] <- "4-12" 
    else if (data$TIS[i] > -1 & data$TIS[i] <=3) 
    data$test[i] <- "0-3" 
    else 
    data$test[i] <- "-1" }
cse
  • 4,066
  • 2
  • 20
  • 37

1 Answers1

5

use cut:

 data$test <- cut(data$TIS, breaks=c(0,3,12,24,36,48,100,Inf))

(you may need to modify the breaks above to get exactly what you want)

lebatsnok
  • 6,329
  • 2
  • 21
  • 22