2016-09-22 72 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