不能将这个excel文件导入到R中
我无法将文件导入到R中。该文件从以下网站获得: https : //report.nih.gov/award/index.cfm ,点击“导入表”并下载了.xls文件1992年。
这个图像可能有助于描述我如何检索数据
以下是我尝试在控制台中input的内容以及结果:
input:
> 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
input:
> 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是。
为什么还要把数据导入和导出.csv文件,如果它正好在网页上供您抓取?
# note the query parameters in the url when you apply a filter, eg 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 AT 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年到现在或类似的东西,这个程序化的方法将节省大量的时间,而不是处理一堆平面文件。
这对我有用
library(gdata) dat1 <- read.xls("1992.xls")
如果你在32位Windows上,这也将工作:
require(RODBC) dat1 <- odbcConnectExcel("1992.xls")
对于依赖基于rJava
的软件包(如xlsx
几个选项,可以查看此链接 。
正如有人在评论中提到的那样,将文件另存为.csv并以这种方式阅读也很容易。 这将节省您处理导入的文件上奇怪的格式或元数据的影响的麻烦:
dat1 <- read.csv("1992.csv") head(dat1)
ORGANIZATION CITY STATE COUNTRY AWARDS FUNDING 1 AT 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通常也是我认为最快的方法(尽pipe这只是大数据的一个问题)。