Мне приходится делать это очень часто - сопоставляйте конкретные столбцы из 2 разных файлов. Столбцы, форматы являются одинаковыми, но столбцы, которые нуждаются в сравнении, имеют данные с плавающей запятой/экспоненциальным форматом, например. 0.0058104642437413175
, -3.459017050577087E-4
и т.д.Сравнение конкретных столбцов в двух разных файлах с использованием R
настоящее время я использую ниже R код:
test <- read.csv("C:/VBG_TEST/testing/FILE_2010-06-16.txt", header = FALSE, sep = "|", quote="\"", dec=".")
prod <- read.csv("C:/VBG_PROD/testing/FILE_2010-06-16.txt", header = FALSE, sep = "|", quote="\"", dec=".")
sqldf("select sum(V10), sum(V15) from test")
sqldf("select sum(V10), sum(V15) from prod")
Я прочитал в файлах, и суммировать определенные столбцы - V10
, V15
, а затем наблюдать значения. Таким образом, я могу игнорировать очень небольшие различия в данных с плавающей запятой в строке.
Однако, в будущем, я хотел бы установить процент допуска, т.е. if abs((prod.V10 - test.V10)/prod.V10) > 0.01%
и напечатайте только те номера строк, которые превышают этот предел допуска.
Кроме того, если данные не находятся в правильном порядке, как я могу выполнить сравнение, указав столбцы, которые будут действовать как составной первичный ключ?
Для например, если бы я сделал это в Sybase, я бы написал что-то вроде:
select A.*, B.*
from tableA A, tableB B
where abs((A.Col15-B.Col15)/A.Col15)) > 0.01%
and A.Col1 = B.Col1
and A.Col4 = B.Col4
and A.Col6 = B.Col6
Если я пытаюсь делать то же самое, используя sqldf
в R, он не работает, как файлы содержат 500K + строки данных.
Может ли кто-нибудь указать мне, как я могу сделать выше в R?
Большое спасибо, Chapax.
Можете ли вы подробно остановиться на «том же» и «это НЕ работает», пожалуйста? – mdsumner
, пытающийся запустить SQL-код Sybase в sqldf, заставляет R продолжать работать очень и очень долгое время ... и именно поэтому я сказал, что «он НЕ работает». – Chapax
у вас, кажется, есть несколько вопросов; может быть, их разбить? Я не уверен, если у вас возникли проблемы с чтением значений в data.frame или если вы дополнительно ищете ответ, предполагающий, что data.frame полностью реализован в памяти. – ayman