#r #csv #sqlite
#r #csv #sqlite
Вопрос:
Цель: переместить файл csv в базу данных sqlite, проходящую через R (я не могу избежать прохождения через R), и выполнить некоторые запросы к базе данных Sqlite из R.
Проблема: когда я выполняю простой запрос в базе данных sqlite (сумма столбца), и я выполняю то же вычисление в R путем суммирования столбца фрейма данных (те же данные, что и в базе данных sqlite) Я получаю два совершенно разных результата.
Пока я не знаю, какому из них я должен доверять. Обратите внимание, что я не могу открыть файл CSV в Excel для проверки вручную, поскольку файл очень большой.
Я уже пытался изменить тип столбца при перемещении файла 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 столбцу в базе данных 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
Заранее благодарю вас за вашу сверхценную помощь!
Комментарии:
1. Когда я запускаю запрос q2, я получаю все значения столбца «значения» внутри баз данных sqlite, хранящихся в t2 (простой фрейм данных в R). Поэтому, когда я запускаю эту сумму (t2 $values == таблица $values) Я проверяю, совпадают ли значения, полученные с помощью запроса q2, с значениями внутри фрейма данных «таблица» в столбце «значения». Помните, что «таблица» — это эквивалентный фрейм данных, который у меня также есть в форме SQLite, называемый «таблицей».
2. Какие результаты вы получаете, используя два разных метода? Доступен ли где-нибудь набор данных? Для меня это звучит как числовое переполнение где-то, но с таким небольшим количеством доступной информации трудно сказать, где.