无法将此excel文件导入R

时间:2016-09-22 14:55:06

标签: r excel file import format

我在将文件导入R时遇到问题。该文件来自此网站:https://report.nih.gov/award/index.cfm,我点击了“导入表格”并下载了1992年的.xls文件。

此图片可能有助于描述我如何检索数据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是。

2 个答案:

答案 0 :(得分: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 :(得分: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年到现在或类似的事情,这种程序化方法将为您节省大量时间,而不是处理一堆平面文件。