对于循环,r在400万条记录中始终缓慢

时间:2018-01-19 11:33:37

标签: r

我是r的初学者 我必须在TIS列中找到数字的范围并更新另一列。我使用下面的代码,但速度极慢。有关如何改进的想法吗?

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" }

1 个答案:

答案 0 :(得分:5)

使用cut

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

(您可能需要修改上面的中断以获得您想要的内容)