我目前正在将数据从SQLite数据库导入到R中,以便我可以对其中包含的值进行合并,特别是在100到150范围内的值。我试图将值包装起来在取值的中位数之前进入0.001的区间,例如: -
> head(mzDiff150)
abs(diffs)
1 100.0008
2 100.0158
3 100.0212
4 100.0233
5 100.0327
6 100.0364
构成我数据头部的这些值应该被分类到0.001的容器中,如下所示: -
(100,100.001] (100.001,100.002] (100.002,100.003]
100.0008 N/A N/A etc
因此,通过查看我的数据,我不应该在很多箱子中有价值,即很多N / As,这很好。但是,我得到以下结果: -
(100,100.001] (100.001,100.002] (100.002,100.003] (100.003,100.004] (100.004,100.005] (100.005,100.006]
100.0005 100.0015 100.0025 100.0035 100.0045 100.0055
我不明白,因为不应该有任何属于这些bin范围的值。数据也全部排序。这是我执行的代码: -
> library(DBI)
> con <- dbConnect(RSQLite::SQLite(), dbname = "diffs.sqlite")
> tables <- dbListTables(con)
> mzDiff150 <- dbGetQuery(conn = con, statement = paste("SELECT `abs(diffs)` FROM mzdiff where `abs(diffs)` <= 150 and `abs(diffs)` > 100 ", sep = ","))
> bin <- seq(100, 150, by = 0.001)
> binnedData <- tapply(mzDiff150[, 1], cut(mzDiff150[, 1], breaks = bin), median)
我觉得这个错误是显而易见的,但我无法看到它的位置。任何人都可以看到我出错的地方吗?
更新
所以我将我的数据子集化为大约2200万个值到250并再次执行相同的操作并且它有效!看起来R似乎在使用大数据正确执行函数时遇到问题,而不是函数本身存在问题。问题是,2200万个值来自30亿个值的更大数据集,所以我不认为有人知道我能克服这个问题的方法吗?
由于
由于