我编写了一个函数,它接受一个小时的向量,即0到23之间的数字,并将每小时放入8个连续桶中的一个。例如,小时0,1和2放在桶1中,小时21,22和23放在桶8中。桶作为向量返回。
ifelse结构非常复杂,将来我可能会增加或减少每个桶的大小。有人可以建议替代方案吗?
getBucket <- function(hour)
{
ifelse (hour < 3, 1, ifelse (hour < 6, 2, ifelse (hour < 9, 3, ifelse (hour < 12, 4, ifelse (hour < 15, 5, ifelse (hour < 18, 6, ifelse (hour < 21, 7, 8)))))))
}
答案 0 :(得分:3)
整数除法很简单:
hours <- 0:23
hours %/% 3 + 1
# [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8
答案 1 :(得分:2)
hours <- c(23,11,2,5, 0)
findInterval(hours, seq(0, 23, by=3) )
[1] 8 4 1 2 1