2012-01-21 3 views
3

Я пытаюсь webscrape таблицу ОЭСР с R.R код: webscraping

library(XML) 
OECD <- readHTMLTable('http://stats.oecd.org/Index.aspx?DataSetCode=MEI_CLI') 
OECD<- data.frame(rawOECD[[1]]) 

мне удалось получить основную таблицу с указанным кодом, но у меня возникли проблемы с получением его в презентабельный форме.

Буду Вам благодарен за вашу помощь.

С наилучшими пожеланиями,

Адам

ответ

7

Как насчет этого?

library(XML) 
OECD <- readHTMLTable('http://stats.oecd.org/Index.aspx?DataSetCode=MEI_CLI',stringsAsFactors = FALSE) 

n.rows <- unlist(lapply(OECD, function(t) dim(t)[1])) 
out <-as.data.frame(OECD[[which.max(n.rows)]]) 
colnames(out) <-c("Date",out[7,-ncol(out)]) #add row names 
out <-out[-(1:9),] #clean up 
+0

Это замечательно. Большое спасибо за Вашу помощь. – user1162244

+0

Рад, что это помогло. Не забудьте пометить ответ как принятый (щелкните серый флажок, чтобы он стал зеленым). –

0

Альтернативой использования HTML, для того, чтобы сделать абстракцию «вид» (который, вероятно, изменится, по крайней мере, в соответствии с вашими запросами данных), и, возможно, параметризовать ваши запросы данных из R, является рассмотреть стандартный формат обмена SDMX, поддерживаемый порталом статистики ОЭСР. Если вы нажмете на экспорт, выберите «SDMX» и скопируйте веб-запрос запроса SDMX.

Тогда в R, вы можете легко использовать rsdmx пакет:

require(rsdmx) 
sdmx <- readSDMX("http://stats.oecd.org/restsdmx/sdmx.ashx/GetData/MEI_CLI/LOLITOAA+LOLITONO+LOLITOTR_STSA+LOLITOTR_GYSA+BSCICP03+CSCICP03+LORSGPRT+LORSGPNO+LORSGPTD+LORSGPOR_IXOBSA.AUS+AUT+BEL+CAN+CHL+CZE+DNK+EST+FIN+FRA+DEU+GRC+HUN+IRL+ISR+ITA+JPN+KOR+LUX+MEX+NLD+NZL+NOR+POL+PRT+SVK+SVN+ESP+SWE+CHE+TUR+GBR+USA+EA19+G4E+G-7+NAFTA+OECDE+OECD+ONM+A5M+BRA+CHN+IND+IDN+RUS+ZAF.M/all?startTime=2013-09&endTime=2015-08") 
df <- as.data.frame(sdmx) 

rsdmx теперь также предоставляет возможность запрашивать данные из хорошо известных поставщиков данных, и ОЭСР является частью этого списка. Для этой функции вам нужно будет использовать версию rsdmx> = 0.5 (теперь только на Github). Вот ниже пример:

sdmx <- readSDMX(providerId = "OECD", resource = "data", flowRef = "MEI_CLI", 
       key = "all", key.mode = "SDMX", 
       start = "2013-09", end = "2015-08") 
df <- as.data.frame(sdmx) 

Примечание: Учтите также, что вы можете использовать один и тот же формат ОСДМ и rsdmx для чтения метаданных, таких как data structure definition (также предоставленной ОЭСР).

Надеюсь, это поможет

Смежные вопросы