2016-07-22 103 views
0

我想從本網站讀取表格。只讀一些列時使用readHTMLTable從網站獲取表格

http://www.databaseolympics.com/games/gamessport.htm?g=1&sp=ATH

問題是,我只是想在第一列(事件)和最後一列(獎章)被讀取。 這是我的代碼和結果:

temp_URL<-'http://www.databaseolympics.com/games/gamessport.htm?g=1&sp=ATH' 
tab<-readHTMLTable(temp_URL, which=3,colClasses = c('factor',NULL,NULL,NULL,'factor')) 
head(tab) 

    Event   Athlete Country Result Medal 
1 100m Men  Tom Burke  USA  12.0 GOLD 
2   Fritz Hofmann  DEU 12.2 est. SILVER 
3    Francis Lane  USA  12.6 BRONZE 
4   Alajos Szokolyi  HUN 12.6 est. BRONZE 
5 400m Men  Tom Burke  USA  54.2 GOLD 
6   Herbert Jamison  USA  n/a SILVER 

正如你可以看到它返回表的所有列。我在R文檔上看到,使用colClasses並指出Null值應該讓R忽略該列,但它不適用於我。我知道,一旦你有R中這是很容易,只是創建具有所需列的新數據幀中的數據:

tab<-data.frame(tab$Event,tab$Medal) 
    head(tab) 
     tab.Event tab.Medal 
    1 100m Men  GOLD 
    2    SILVER 
    3    BRONZE 
    4    BRONZE 
    5 400m Men  GOLD 
    6    SILVER 

我真的想避免這種額外的步驟,並在其中找到只有所需的方式數據進入R,原因是因爲這個頁面是需要讀取數千頁的代碼的一部分,並且多次運行時額外的步驟可能是耗時的。

回答

0

使用列表,而不是載體:

temp_URL<-'http://www.databaseolympics.com/games/gamessport.htm?g=1&sp=ATH' 

tab<-readHTMLTable(temp_URL, which=3,colClasses = list("factor",NULL,NULL,NULL,"factor"),stringsAsFactors = FALSE) 

head(tab) 
       V1  V2 
     1 100m Men GOLD 
     2   SILVER 
     3   BRONZE 
     4   BRONZE 
     5 400m Men GOLD 
     6   SILVER 
+0

它worked.Thanks – Lee