Импорт таблиц википедии в R - PullRequest
       3

Импорт таблиц википедии в R

14 голосов
/ 14 сентября 2011

Я регулярно извлекаю таблицы из Википедии.Веб-импорт Excel не работает должным образом для Википедии, так как он обрабатывает всю страницу как таблицу.В электронной таблице Google я могу ввести это:

=ImportHtml("http://en.wikipedia.org/wiki/Upper_Peninsula_of_Michigan","table",3)

, и эта функция загрузит 3-ю таблицу со списком всех округов штата Мичиган с этой страницы.

Есть ли что-то похожее в R?или может быть создан с помощью пользовательской функции?

Ответы [ 4 ]

12 голосов
/ 14 сентября 2011

Функция readHTMLTable в пакете XML идеально подходит для этого.

Попробуйте следующее:

library(XML)
doc <- readHTMLTable(
         doc="http://en.wikipedia.org/wiki/Upper_Peninsula_of_Michigan")

doc[[6]]

            V1         V2                 V3                              V4
1       County Population Land Area (sq mi) Population Density (per sq mi)
2        Alger      9,862                918                            10.7
3       Baraga      8,735                904                             9.7
4     Chippewa     38,413               1561                            24.7
5        Delta     38,520               1170                            32.9
6    Dickinson     27,427                766                            35.8
7      Gogebic     17,370               1102                            15.8
8     Houghton     36,016               1012                            35.6
9         Iron     13,138               1166                            11.3
10    Keweenaw      2,301                541                             4.3
11        Luce      7,024                903                             7.8
12    Mackinac     11,943               1022                            11.7
13   Marquette     64,634               1821                            35.5
14   Menominee     25,109               1043                            24.3
15   Ontonagon      7,818               1312                             6.0
16 Schoolcraft      8,903               1178                             7.6
17       TOTAL    317,258             16,420                            19.3

readHTMLTable возвращает список data.frames для каждого элемента HTML-страницы.Вы можете использовать names для получения информации о каждом элементе:

> names(doc)
 [1] "NULL"                                                                               
 [2] "toc"                                                                                
 [3] "Election results of the 2008 Presidential Election by County in the Upper Peninsula"
 [4] "NULL"                                                                               
 [5] "Cities and Villages of the Upper Peninsula"                                         
 [6] "Upper Peninsula Land Area and Population Density by County"                         
 [7] "19th Century Population by Census Year of the Upper Peninsula by County"            
 [8] "20th & 21st Centuries Population by Census Year of the Upper Peninsula by County"   
 [9] "NULL"                                                                               
[10] "NULL"                                                                               
[11] "NULL"                                                                               
[12] "NULL"                                                                               
[13] "NULL"                                                                               
[14] "NULL"                                                                               
[15] "NULL"                                                                               
[16] "NULL" 
7 голосов
/ 15 января 2016

Вот решение, которое работает с защищенной (https) ссылкой:

install.packages("htmltab")
library(htmltab)
htmltab("http://en.wikipedia.org/wiki/Upper_Peninsula_of_Michigan",3)
5 голосов
/ 01 февраля 2017

Опираясь на ответ Андре и адреса SSL.Если вы можете взять одну дополнительную библиотечную зависимость:

library(httr)
library(XML)

url <- "https://en.wikipedia.org/wiki/Upper_Peninsula_of_Michigan"

r <- GET(url)

doc <- readHTMLTable(
  doc=content(r, "text"))

doc[6]
2 голосов
/ 14 сентября 2011

Один из простых способов сделать это - использовать интерфейс RGoogleDocs, чтобы Google Docs мог выполнить преобразование для вас:

http://www.omegahat.org/RGoogleDocs/run.html

Затем можно использовать =ImportHtml Функция Google Docs со всей своей предустановленной магией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...