Запись связывания фреймов данных с помощью функции RLBigDataLinkage в пакете RecordLinkage в R - PullRequest
3 голосов
/ 20 апреля 2011

Я хотел бы связать два фрейма данных, которые используют разные цифровые клавиши, но аналогичные строки. В частности, один фрейм данных использует цифровой ключ GVKEY и название компании CONML

> head(temp.compustat[order(temp.compustat$CONML, decreasing = T), ])
        GVKEY             CONML
225994  13023  ZZZZ Best Co Inc
211017  11696       Zytrex Corp
213816  11951 Zytec Systems Inc
309886  29163        Zytec Corp
373950 129441         Zynex Inc
383184 145228  ZymoGenetics Inc
> dim(temp.compustat)
[1] 31354     2

В другом фрейме данных используется другой цифровой ключ companyid и название компании company, которое может немного отличаться от CONML в первой базе данных.

> head(temp.dealscan[ order(temp.dealscan$company, decreasing = T), ])
      companyid            company
70473     18192 Zytec Corp 
32025     16969 Zynaxis Inc
19714     92271 ZYGO Teraoptix Inc
80473     13185 Zygo Corp 
1901      24303 Zycon Corp SDN Bhd 
33993     21219 Zycon Corp

> dim(temp.dealscan)
[1] 85818     2

(Я сортирую в обратном порядке, потому что в базах данных DealScan есть пробелы и * в начале некоторых записей). Кажется, что функция RLBigDataLinkage в пакете RecordLinkage является решением, но я не могу получить даже неконтролируемые ссылки на работу. Вот моя ошибка.

> library(RecordLinkage)
> rpairs <- RLBigDataLinkage(dataset1 = temp.compustat, dataset2 = temp.dealscan, exclude = 1, strcmp = 2, strcmpfun = "levenshtein")
> result <- epiClassify(rpairs, threshold.upper = 0.5)
Error in if (max <= min) stop("must have max > min") : 
  missing value where TRUE/FALSE needed
In addition: Warning message:
In nData1 * nData2 : NAs produced by integer overflow

Встретившись со мной вчера, я увидел вопрос об использовании функции расстояния Левенштейна вручную. Является ли этот подход лучшим вариантом для меня? Эти фреймы данных довольно большие, поэтому кажется, что RLBigData должен быть правильным подходом (авторы пакета рекомендуют его для> 1000 записей). Спасибо!

1 Ответ

2 голосов
/ 21 апреля 2011

Это связано с ошибкой в ​​коде пакета, которая сейчас исправлена.Фиксированная версия будет доступна на сайте проекта в R-Forge (https://r -forge.r-project.org / projects / recordlinkage), вероятно, до завтрашнего утра.Обратите внимание, что это зависит от версии 1.5.4 пакета data.table, который в настоящее время недоступен в CRAN, но от R-Forge (https://r -forge.r-project.org / projects / datatable /).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...