我是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" }
答案 0 :(得分:5)
使用cut
:
data$test <- cut(data$TIS, breaks=c(0,3,12,24,36,48,100,Inf))
(您可能需要修改上面的中断以获得您想要的内容)