Я пытаюсь извлечь бизнес-описания нескольких фирм из их 10-тысячных отчетов, используя пакет R, edgar
. Для этого я использую функцию getBusinDescr
.
Поскольку мне нужны бизнес-описания многих фирм (более 1000), я создал вектор cik-идентификаторов фирм и позволил R загрузить описания более 1000 фирм, используя этот вектор. Проблема в том, что R отлично загружает нужные мне заполнения (10-тысячные отчеты), но не может извлечь интересующий меня раздел. Он остановился на 61% для 2007 года и на 31% для 2011 года. Однако для 2010 года экстракция удалась на 100%.
В итоге добыча работает в одни годы, но не работает в другие годы. Мне любопытно узнать, откуда эта ошибка. Как вы думаете, это связано с доступностью данных (например, у некоторых фирм нет описания бизнеса в течение нескольких лет) или с какими-то естественными ошибками из-за повторных попыток парсинга? Пожалуйста, помогите мне интерпретировать и, надеюсь, справиться с ошибкой.
К вашему сведению, я использую последнюю версию R на своем Mac.
Код, который я использую:
# using edgar package on R
library(edgar)
# cikvector is a vector of multiple firms' identifier codes
# for year 2007
- filings.BusinDes.2007 <- getBusinDescr( cik.no=cikvector, filing.year=2007)
# for year 2008
filings.BusinDes.2008 <- getBusinDescr( cik.no=cikvector, filing.year=2008)
Идеальные результаты следующие:
Downloading fillings. Please wait...
100%
Extracting 'Item 1' section...
100%
Business descriptions are stored in 'Business descriptions text' directory.
Ошибка, с которой я сталкиваюсь, выглядит следующим образом (однако загрузка всех отчетов выполняется без проблем):
Downloading fillings. Please wait...
100%
Extracting 'Item 1' section...
**| 31%Error in (grep("<DOCUMENT>", filing.text, ignore.case = TRUE)[1]): (grep("</DOCUMENT>", :
NA/NaN argument**
Я получил ту же ошибку, но обнаружил, что простое «закомментирование» проблемных строк в коде функций решило проблему.
Итак, вам нужно отредактировать функцию getBusinDescr из пакета Edgar. Один из простых способов сделать это в R-Studio — просто запустить:
fix(getBusinDescr)
Далее нужно найти следующие строки:
filing.text <- filing.text[(grep("<DOCUMENT>", filing.text,
ignore.case = TRUE)[1]):(grep("</DOCUMENT>", filing.text,
ignore.case = TRUE)[1])]
и добавьте # в начале каждой строки, чтобы удалить их из функции (т. е. закомментировать их). Затем, когда вы запустите функцию, она должна работать нормально.
Проблема началась для меня несколько недель назад или около того, и я уверен, что до этого она работала отлично, используя те же базовые данные. Мое лучшее предположение о том, почему это произошло, заключается в том, что SEC, вероятно, немного изменила свой HTML-код, чтобы теги «» не отображались в некоторых необработанных файлах. Я не удосужился проверить эту теорию, но это имело бы смысл.
Ничего себе, это имеет смысл. Большое спасибо за ответ! :)