R 用于bucketization的向量化ifelse语句

R 用于bucketization的向量化ifelse语句,r,R,我编写了一个函数,它接受一天中小时的向量,即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

我编写了一个函数,它接受一天中小时的向量,即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)))))))
}

getBucket
hours
hours整数除法很简单:

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

hours整数除法很简单:

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

hours谢谢。我应该想到这一点。事实上,我早就试过%%8小时了。谢谢。我应该想到这一点。事实上,我早就试过%%8小时了。