使用 for 循环创建间隔

create interval with for loop

我们可以使用cut创建区间数据进一步作为标签,也可以利用for循环

剪切函数

perform_vec <- perform[["Performance"]]
perf_labs <- c(1,2,3,4,5,6)
perfcut <- cut(perform_vec,breaks = c(0,25,49.99,69.99,84.99,94.99,101),right = F, labels = perf_labs)
perfcut_df <- as.data.frame(cbind(perform_vec, perfcut))
perfcut_df$perfcut <- factor(perfcut_df$perfcut, levels = c(1,2,3,4,5,6), labels = c("D","C","B-","B","A-","A"))

结果如下:

我想用for循环创建它

在解决方案 #1 中,我们在一个循环中计算每个输入值超过多少 breaks,然后使用它来索引到 labels。解决方案 #2 做同样的事情,但使用 outer 而不是循环。解决方案 #3 使用 cut.

# input
x <- c(30, 50, 80)
breaks <- c(0,25,49.99,69.99,84.99,94.99,101)
labels <- c("D","C","B-","B","A-","A")

# solutions

# 1 - loop
lev <- 0 * x
for (b in breaks) lev <- lev + (x > b)
factor(labels[lev], levels = labels)
## [1] C  B- B 
## Levels: D C B- B A- A

# 2 - outer
factor(labels[rowSums(outer(x, breaks, `>`))], levels = labels)
## [1] C  B- B 
## Levels: D C B- B A- A

# 3 - cut
cut(x, breaks, labels)
## [1] C  B- B 
## Levels: D C B- B A- A