【发布时间】:2015-01-12 18:47:11
【问题描述】:
data.table 中的每一行,我需要从向量中找到最接近的较低数字。下面的最小工作示例可以完成这项工作,但速度太慢了,尤其是对于较长的 pre.numbers 向量(实际数据中约有 100 万个元素)。
library(data.table)
set.seed(2)
pre.numbers <- sort(floor(runif(50000, 1, 1000000)))
the.table <- data.table(cbind(rowid=1:10000, current.number=floor(runif(1000, 1, 100000)), closest.lower.number=NA_integer_))
setkey(the.table, rowid)
the.table[, closest.lower.number:=max(pre.numbers[pre.numbers<current.number]), by=rowid]
必须有更聪明的方法来做到这一点。向量数和data.table中的数字没有关系。
【问题讨论】:
-
您可以将 minimal 示例的问题大小减少到几行,并使用
set.seed使其可重现。
标签: r data.table