我编写了一个函数,它接受一天中小时数的向量,即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)))))))
}发布于 2014-02-20 08:13:48
整数除法很简单:
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发布于 2014-02-20 08:09:01
hours <- c(23,11,2,5, 0)
findInterval(hours, seq(0, 23, by=3) )
[1] 8 4 1 2 1https://stackoverflow.com/questions/21901165
复制相似问题