SQLITE中列的总和与同一列R中的总和产生不同的结果

时间:2019-04-23 12:47:06

标签: r csv sqlite

目标:将csv文件移至通过R传递的sqlite数据库中(我无法避免通过R),并从R对Sqlite数据库执行一些查询。

问题:当我在sqlite数据库(列的总和)上执行简单查询时,通过对数据框的列求和(与sqlite数据库中的数据相同),我在R中进行了相同的计算,我得到了两个结果不同。

到目前为止,我不知道应该信任哪一个。注意,由于文件很大,我无法在excel中打开csv文件进行手动检查。

在将csv文件移动到sqlite数据库中时,我已经尝试过更改列的类型。到目前为止,我已经尝试过:整数,数字,双精度,实型。

library(RSQLite)

con <- dbConnect(SQLite(), "data/table.sqlite")


q1 <- "
SELECT
sum(table.values)
FROM
table;
"

t1 <- dbGetQuery(con, q1)
t1


# Sum the same column from the data frame within R
s1 <- sum(table$values)

在这种情况下,我将t1(带有SQLite的“值”列的总和)与sq(带有R的“值”列的总和)进行比较,但它们不匹配。错误非常大。不仅是小数点……我得到了数百万的区别……(我正在处理一个非常大的文件)。

我还检查了R i中数据框的列与SQLite数据库中的列是否相等!

q2 <- "
SELECT
table.values
FROM
table;
"
t2 <- dbGetQuery(con, q2)
t2

sum(t2$values == table$values)

最后一行代码给我3000000,这意味着所有元素都相等,因为我的数据框和sqlite数据库都具有3000000行。

我只是想知道如何从R和Sqlite数据库中获得相同的结果。

我是否缺少有关Sqlite数据库内部值类型的信息?

操作系统:Mac OS Mojave 10.14.1 R版本3.5.2(2018-12-20) SQLite 3

在此先感谢您的宝贵帮助!

0 个答案:

没有答案