воскресенье, 24 мая 2015 г.

Получение данных из DataMarket в R

DataMarket - сайт содержащий огромное количество данных в разных областях - промышленность, добыча полезных ископаемых, демография, погода, уровень преступности и многое другое. И вы можете загружать эти данные (хотя и не все, так как часть из них доступна только на коммерческой основе) непосредственно в R с помощью отличного пакета  rdatamarket.

Загрузка данных

Сначала установим пакет и загрузим его в R:
install.packages('rdatamarket')
library(rdatamarket)

Затем нам нужен URL тех данных, которые мы хотим скачать. Предположим, нас интересует добыча нефти в Анголе, Брунее и Египте. Скопируйте URL из браузера и вставьте его в вызов dmseries или dmlist:

l <- data="" datamarket.com="" dmlist="" ds="17tm|kqc=17.v.i" font="" http:="" set="" tm="">

Короткие URL (data.is, bit.ly, is.gd, t.co) также работают:
l <- data.is="" dmlist="" font="" http:="" nyfep9="">

С помощью функции dmlist вы получаете объект data.frame. Если вам нужен временной ряд zoo, используйте dmseries.
plot(dmseries("http://data.is/nyFeP9"))

При необходимости можно указать прокси-сервер:
dmCurlOptions(proxy="http://outproxy.mycompany.com")

Чтение метаданных

Получите объект с требуемыми данными (найдите ID в URL или просто скопируйте весь URL):
oil <- dminfo="" font="" tm="">
oil <- data="" datamarket.com="" dminfo="" ds="17tm|kqc=17.v.i" font="" http:="" set="" tm="">
print(oil)
Вывод:
Title: "Oil: Production tonnes"
Provider: "BP" Dimensions:
"Algeria"
"Country" (60 values): "Angola"
[...]
"Argentina" "Australia"
"Azerbaijan"
Вы можете просмотреть все значения Country:
oil$dimensions[[1]]$values

Вывод:

a "Algeria"
17 "Angola"
d "Argentina"
z "Australia"
1b "Brazil"
1l "Azerbaijan" v "Brunei"
1o "Chad"
1h "Cameroon" 13 "Canada"
[...]
А теперь набор данных с двумя измерениями (помимо времени):
p <- data="" datamarket.com="" dminfo="" font="" http:="" male-population-thousands="" r9="" set="">
print(p) Title: "Male population (thousands)"
Dimensions:
Provider: "United Nations" (citing "United Nations Population Division") "Country or Area" (229 values):
"Constant-fertility scenario"
"Afghanistan" "Africa" "Albania" "Algeria" "Angola" [...] "Variant" (5 values):
"Medium variant"
"Estimate variant" "High variant"
"Low variant"

Выборка данных

Выберем из последнего набора данных прогноз ООН по росту населения в Сомали и Швеции в предположении, что рождаемость будет постоянной:
dmseries(p, 'Country or Area'=c("Somalia", "Sweden"),
Variant="Constant-fertility scenario")
2010-07-01 4642.070 4613.551
Somalia Sweden 2015-07-01 5357.233 4725.918
2030-07-01 8490.929 5021.646
2020-07-01 6211.305 4840.434 2025-07-01 7243.572 4942.865 2035-07-01 9990.910 5083.680
2050-07-01 16597.110 5281.437
2040-07-01 11793.524 5144.685
2045-07-01 13966.319 5211.212
То же самое в виде data.frame:
dmlist(p, 'Country or Area'=c("Somalia", "Sweden"),
Variant="Constant-fertility scenario")
Country.or.Area Variant Year Value
1 Somalia Constant-fertility scenario 2010 4642.070
3 Somalia Constant-fertility scenario 2020 6211.305
2 Somalia Constant-fertility scenario 2015 5357.233 4 Somalia Constant-fertility scenario 2025 7243.572
7 Somalia Constant-fertility scenario 2040 11793.524
5 Somalia Constant-fertility scenario 2030 8490.929 6 Somalia Constant-fertility scenario 2035 9990.910 8 Somalia Constant-fertility scenario 2045 13966.319
12 Sweden Constant-fertility scenario 2020 4840.434
9 Somalia Constant-fertility scenario 2050 16597.110 10 Sweden Constant-fertility scenario 2010 4613.551 11 Sweden Constant-fertility scenario 2015 4725.918 13 Sweden Constant-fertility scenario 2025 4942.865
18 Sweden Constant-fertility scenario 2050 5281.437
14 Sweden Constant-fertility scenario 2030 5021.646 15 Sweden Constant-fertility scenario 2035 5083.680 16 Sweden Constant-fertility scenario 2040 5144.685
17 Sweden Constant-fertility scenario 2045 5211.212

Комментариев нет:

Отправить комментарий