2016-09-22 44 views
1

我无法将文件导入R.此文件从此网站获得:https://report.nih.gov/award/index.cfm,其中我点击了“导入表”并下载了1992年的.xls文件。无法将此excel文件导入到R

此图片可以帮助描述我是如何获取的数据Image describing how I retrieved the data from the NIH database

这里就是我试过输入到控制台,与结果一起:

输入:

> library('readxl') 
> data1992 <- read_excel("1992.xls") 

输出:

Not an excel file 
Error in eval(substitute(expr), envir, enclos) : 
    Failed to open /home/chrx/Documents/NIH Funding Awards, 1992 - 2016/1992.xls 

输入:

> data1992 <- read.csv ("1992.xls", sep ="\t") 

输出:

Error in read.table(file = file, header = header, sep = sep, quote = quote, : 
    more columns than column names 

我不知道这是否是相关的,但我使用GalliumOS(Linux版) 。因为我正在使用Linux,所以我的电脑上没有安装Excel。 LibreOffice是。

+1

我认为你需要提供更多关于如何获得必要的Excel文件来重现这一点的信息。如果我只是点击该链接并在1992年,结果是一个项目列表。我没有看到任何地方下载Excel文件。它是组织列表中的导出表选项吗? –

+0

当然,给我一秒钟。 –

+0

肯定np,谢谢 –

回答

2

为什么要在数据进出的.csv如果它正好在网页上为你刮?

# note the query parameters in the url when you apply a filter, e.g. fy= 
url <- 'http://report.nih.gov/award/index.cfm?fy=1992' 

library('rvest') 
library('magrittr') 
library('dplyr') 
df <- url %>% 
     read_html() %>% 
     html_nodes(xpath='//*[@id="orgtable"]') %>% 
     html_table()%>% 
     extract2(1) %>% 
     mutate(Funding = as.numeric(gsub('[^0-9.]','',Funding))) 

head(df) 

回报

       Organization   City State  Country Awards Funding 
1 A.T. STILL UNIVERSITY OF HEALTH SCIENCES KIRKSVILLE MO UNITED STATES  3 356221 
2      AAC ASSOCIATES, INC.  VIENNA VA UNITED STATES  10 1097158 
3  AARON DIAMOND AIDS RESEARCH CENTER  NEW YORK NY UNITED STATES  3 629946 
4      ABBOTT LABORATORIES NORTH CHICAGO IL UNITED STATES  4 1757241 
5       ABIOMED, INC.  DANVERS MA UNITED STATES  6 2161146 
6      ABRATECH CORPORATION  SAUSALITO CA UNITED STATES  1 450411 

如果需要通过多年的1992年环呈现,或类似的东西,这种编程方法会为你节省大量的时间与处理一堆平面文件。

+0

谢谢@Caffeine。之所以我没有刮网页是因为我对R很新,所以它甚至都没有想到。虽然你的解决方案看起来相当不错。我一定要更多地阅读你使用的软件包。 –

+0

@GeorgeTye不用客气 - 如果Hack-R或者我回答了你的问题,请点击复选标记接受(两个答案都可以工作,所以如果你接受另一个,我不介意) – C8H10N4O2

2

这对我的作品

library(gdata) 
dat1 <- read.xls("1992.xls") 

如果你在32位的Windows,这也将工作:

require(RODBC) 
dat1 <- odbcConnectExcel("1992.xls") 

对于那些依靠rJava基于包像xlsx几个选项,你可以看看这个link

正如有人在评论中提到的,它也很容易将文件保存为.csv并以此方式读取。这将节省您用奇怪的格式或元数据的处理效果上的导入文件的麻烦:

dat1 <- read.csv("1992.csv") 

head(dat1) 
       ORGANIZATION   CITY STATE  COUNTRY AWARDS  FUNDING 
1 A.T. STILL UNIVERSITY OF HEALTH SCIENCES KIRKSVILLE MO UNITED STATES  3 $356,221 
2      AAC ASSOCIATES, INC.  VIENNA VA UNITED STATES  10 $1,097,158 
3  AARON DIAMOND AIDS RESEARCH CENTER  NEW YORK NY UNITED STATES  3 $629,946 
4      ABBOTT LABORATORIES NORTH CHICAGO IL UNITED STATES  4 $1,757,241 
5       ABIOMED, INC.  DANVERS MA UNITED STATES  6 $2,161,146 
6      ABRATECH CORPORATION  SAUSALITO CA UNITED STATES  1 $450,411 

转换为.csv也通常在我看来,最快捷的方式(尽管这只是大数据的一个问题)。

+1

不错的通话,我需要使用gdata更多 – C8H10N4O2