我正在尝试使用 R 包从他们的 10-K 报告中提取多家公司的业务描述,edgar
.我正在使用getBusinDescr
函数来执行此操作。
由于我想要许多公司(1000+)的业务描述,我创建了一个公司的cik标识符向量,并让R使用该向量下载1000+公司的描述。问题是,R 完美地下载了我想要的填充物(10-K 报告),而它无法提取我感兴趣的部分。2007年止步于61%,2011年止于31%。然而,在2010年,提取结果为100%。
总而言之,提取在某些年份有效,但在其他年份无效。我很想知道这个错误是从哪里来的。您认为这是因为数据可用性(即某些公司几年没有业务描述)还是重复抓取尝试造成的一些自然错误?请帮助我解释并希望处理错误。
仅供参考,我正在Mac上使用最新的R。
我使用的代码是:
# 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**
我得到了同样的错误,但发现简单地"注释掉"函数代码中有问题的行就可以解决问题。
因此,您需要从 Edgar 包中编辑函数 'getBusinDescr'。 在 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代码,以便"标签不会出现在某些原始文件中。 我没有费心去测试这个理论,但它是有道理的。