无法计算R中的正确中值

时间:2015-03-16 09:58:49

标签: r sqlite median binning

我目前正在将数据从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亿个值的更大数据集,所以我不认为有人知道我能克服这个问题的方法吗?

由于

由于

0 个答案:

没有答案