sql - 在 R 或 SQL 中分桶

标签 sql sql-server r oracle bucket-sort

我完全被一个问题难住了,需要一些指导。我从 1 到 8 的集合中随机挑选 8 个数字(例如 5,6,8,1,3,4,2,7),并尝试根据顺序将这些数字存储为连续数字的子集他们出现了。

对于上面的示例,第一个存储桶将以 5 开头,然后添加 6。当击中 8 时,将开始一个新的桶。每当我们到达属于现有存储桶的数字时(例如,当我们到达 2 时,可以将其添加到 1 的存储桶中),我们将其添加到那里。在此示例中,经过所有 8 个数字后,我们将得出:

5,6,7
8
1,2
3,4

总共 4 个桶。

我实际上并不关心存储桶的内容,我只是想计算给定的随机 8 位数字集有多少个存储桶。我计划循环遍历一组 1000 个这样的 8 位数字序列。

最佳答案

我的解决方案,不是从 nongkrong 中复制出来的,而是非常相似。您得到桶的数量:

x <- as.integer(c(5,6,8,1,3,4,2,7))
sum(is.na(sapply(1:length(x), function(i) which((x[i]-1L)==x[1:i])[1L])))
# [1] 4

我相信可以对其进行矢量化,然后它就可以完美缩放。

关于sql - 在 R 或 SQL 中分桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31461370/

相关文章:

sql - 存储过程比动态查询慢

sql - 如何在存储过程中使用变量

c# - 需要 SQL Server 2012 Express LocalDB

R如何用新的子字符串替换较长字符串中的子字符串

R数据表: Shifting rows of list type

r - 汇总一个向量,然后将汇总统计信息附加到 R 中的原始数据帧

mysql - 该行来自哪个表?

sql - 你如何做一个在sqlite中有多个列的IN查询

mysql - 替换字符串之间的文本 SQL

sql-server - 如何在 2 个带有 GROUP 的 SELECT 语句之间创建 JOIN?