目标:将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
在此先感谢您的宝贵帮助!