R заточен под воспроизводимость результатов. Существует множество прекрасных решений, обеспечивающих сопоставимость версий системы и пакетов, помогающих применять принципы literate programming… Я же хочу показать, как можно легко и эффективно находить/скачивать/добывать данные, используя собственно R и документируя каждый шаг, что обеспечивает полную воспроизводимость всего процесса. Разумеется, я не ставлю перед собой задачи перечислить все возможные источники данных и фокусирую внимание в основном на демографических данных. Если ваши интересы лежат вне сферы статистики населения, стоит посмотреть в сторону великолепного проекта Open Data Task View.  Для иллюстрации использования каждого из источников информации я привожу пример визуализации полученных данных. Каждый пример кода задуман как самостоятельная единица — копируйте и воспроизводите. Разумеется, сперва необходимо установить требуемые пакеты. Весь код целиком лежит тут. Во многие пакеты включены небольшие удобные наборы данных для иллюстрации методов. Собственно в ядро R входит пакет datasets, в котором содержится большое количество небольших, разнообразных, иногда очень знаменитых, датасетов. Подробный список встроенных в различные пакеты иллюстрационных датасетов ведет на своем сайте Vincent Arel-Bundock. Приятная черта встроенных датасетов в том, что они "всегда с тобой". Уникальные имена тренировочных датасетов можно использовать так же легко, как и любые объекты из Global Environment. Давайте взглянем на очаровательный крохотный набор данных swiss — Swiss Fertility and Socioeconomic Indicators (1888) Data. Ниже я отображу различия в рождаемости между кантонами Швейцарии в зависимости от доли сельского населения и распространенности католической веры.    Некоторые пакеты специально созданы для того, чтобы сделать определенные наборы данных легко доступными пользователям R. Хороший пример подобного пакета — gapminder, который содержит иллюстративный сэмпл данных проекта Gapminder Ханса Рослинга.    Если набор данных хранится где-то онлайн и обладает прямой ссылкой на скачивание, его можно элементарно прочитать в R, всего лишь указав ссылочку. Для примера давайте возьмем знаменитый набор данных Galton о росте отцов и детей из пакета HistData. Только возьмем мы данные по прямой ссылки из списка Vincent Arel-Bundock's   Очень часто наборы данных архивируют, прежде чем отпустить в интернет. Прочитать архив сразу не получится, но решение в R достаточно простое. Логика процесса очень простая: сперва создаем директорию, куда распакуем данные; затем скачиваем архив во временный файл; наконец распаковываем архив в предварительно созданную директорию. Для примера я скачаю Historical New York City Crime Data, набор данных о преступлениях, совершенных в Нью Йорке, который любезно предоставлен правительством штата Нью Йорк и хранится в открытом репозитории данных data.gov.  Иногда скачиваемый архив достаточно увесист, и мы бы не хотели скачивать его заново каждый раз, воспроизводя код. В таком случае имеет смысл сохранить исходный архив, а не использовать временный файл. Наконец, давайте импортируем и визуализируем скачанные и разархивированные данные.   В академическом мире все острее встает вопрос воспроизводимости результатов. Поэтому все чаще открыто публикуемые наборы данных становятся верными спутниками научных статей. Существует немало специализированных репозиториев для подобных наборов данных. Один из самых широко используемых — Figshare. Для него существует обертка для R — rfigshare. Для примера я скачаю свой же набор данных о росте хоккеистов, который я собрал для написания одного из предыдущих постов на Хабре. Обратите внимание, что при первом использовании пакета rfigshare, вас попросят ввести логин и пароль от Figshare для доступа к API — откроется специальная веб страничка в браузере. Есть специальная функция fs_search, но, по моему опыту, проще найти в браузере интересующий нас датасет и скопировать уникальный идентификатор, по которому мы и скачаем его в R. Функция fs_download превращает id в прямую ссылку на скачивание файла.    Евростат публикует в открытом доступе невероятное количество статистики по странам Европы и их регионам. Разумеется, есть специальный пакет eurostat для получения всего этого богатства. К сожалению, встроенная функция search_eurostat плохо справляется с задачей поиска релевантных датасетов. Например, по запросу life expectancy получаем всего лишь два варианта, в то время как в реальности должно быть несколько десятков датасетов. Поэтому наиболее удобное решение выглядит так: отправляемся на сайт Евростата, находим интересующий нас датасет, копируем только его код и, наконец, скачиваем его с помощью пакета eurostat. Обратите внимание, что вся региональная статистика Евростата находится в отдельной БД. Я сейчас скачаю данные об ожидаемой продолжительности жизни в странах Европы, код датасета — demo_mlexpec. Скачивание может занять некоторое время, в зависимости от объема датасета. В нашем случае имеем среднего размера набор данным в 400К наблюдений. Если по какой-то причине автоматически скачать датасет не получается (у меня такого ни разу не было), вручную можно скачать с отдельного сайта Евростата Bulk Download Service.  Давайте посмотрим на остаточную ожидаемую продолжительность жизни в возрасте 65 лет в некоторых выбранный странах Европы, раздельно для мужчин и женщин. Возраст 65 лет — наиболее распространенный традиционный возраст выхода на пенсию. Посмотерть на остаточную ожидаемую продолжительность жизни для этого возраста в динамике очень любопытно в свете разговоров о реформах возраста выхода на пенсию. Из скачанных данных мы отбираем только оценки остаточной ожидаемой продолжительности жизни в возрасте 65, затем отфильтровываем только оценки раздельно для мужчин и женщин, наконец, оставляем только несколько стран: Германию, Францию, Италию, Россию, Испанию и Великобританию.    Существует несколько пакетов, которые предоставляют доступ к данным Всемирного Банка из R. Вероятно, наиболее допиленный из них — довольно свежий wbstats. Его функция wbsearch действительно прекрасно справляется с задачей поиска релевантных датасетов. Для примера, wbsearch("fertility") выдает толковый список из 339 показателей в виде удобной таблички.  Давайте посмотрим на показатель Lifetime risk of maternal death (%) (код SH.MMR.RISK.ZS) — риск смерти для женщины на протяжении жизни, связанный с рождением детей. Всемирный Банк приводит данные по странам, а также несколько различных вариантов группировки стран. Один из примечательных вариантов группировки — разделение по принципу завершенности Демографического Перехода. Ниже я отображаю выбранный показатель для (1) стран уже завершивших ДП, (2) стран еще не завершивших ДП и (3) всего мира в целом.   Организация экономического сотрудничества и развития (OECD) публикует немало данных об экономическом и демографическом развитии стран-членов. Пакет OECD сильно упрощает использование этих данных в R. Функция search_dataset неплохо справляется с поиском необходимых данных по ключевым словам, а get_dataset загружает выбранный датасет. В следующем примере я скачаю данные о продолжительности периодов безработицы и отображу эти данные для мужского населения EU16, EU28 и США, используя метод визуализации heatmap.    World Wealth and Income Database представляет собой гармонизированные временные ряды данных о неравенстве в доходах и богатстве. Разработчики базы данных позаботились о создании специального пакета R, который пока доступен лишь на github.  Функция для скачивания данных — download_wid(). Чтобы корректно указать аргументы для скачивания данных придется немного покопаться в документации пакета и разобраться в достаточно сложной системе кодировки переменных.  Приведенный пример адаптирован из виньетки пакета. Он отображает долю богатства, которой владеет богатейшие 1% и 10% населения во Франции и Великобритании.    Когда речь заходит о проверке больших вопросов о законах динамике человеческих популяций, нет более надежного источника информации, чем Human Mortality Database. Эта база данных разработана и поддерживается демографами, которые применяют state-of-the-art методологию для гармонизации исходных данных. Протокол методов HMD — это шедевр методологии работы с демографическими данными. Оборотная сторона заключается в том, что исходные данные достаточно высокого качества доступны лишь для сравнительно небольшого числа стран. Для ознакомления с доступными пользователю данными я от души рекомендую [Human Mortality Database Explorer][exp], созданный Jonas Schöley. Благодаря Tim Riffe у нас есть пакет HMDHFDplus, который позволяет загрузить данные HMD прямо в R всего в несколько строк кода. Обратите внимание, что для доступа к данным потребуется бесплатный аккаунт на mortality.org. Как можно догадаться из названия пакета, он также позволяет скачивать данные из столь же прекрасной Human Fertility Database.  Приведенный ниже пример взят из моего предыдущего поста и немного обновлен. Мне кажется, он хорошо иллюстрирует всю мощь автоматической загрузки данных в R. Легко и непринужденно я скачаю однолетние возрастные структуры для всех стран HMD за все доступные годы, раздельно для женщин и мужчин. При воспроизведении этого кода стоит помнить, что будет скачано несколько десятков мегабайтов данных. Далее я рассчитаю и отображу соотношение полов во всех возрастах для всех стран в 2012 году. Соотношения полов отражают две ключевые демографические закономерности: 1) всегда рождается больше мальчиков; 2) мужская смертность выше женской во всех возрастах. За исключением считанных и достаточно хорошо изученных примеров соотношение полов при рождении составляет 105-106 мальчиков на 100 девочек. Таким образом, значительные различия в возрастных профилях соотношения полов отражают в первую очередь гендерные различия в смертности.    Департамент народонаселения ООН публикует высококачественные оценки и прогноз численности населения для всех стран мира. Расчеты обновляются каждые 2-3 года и публикуются в открытом доступе в виде интерактивного отчета World Population Prospects. Эти отчеты содержат очень общий дескриптивный анализ и, конечно, богатые данные. Данные доступны в R в специальных пакетах, которые имеют названия вида wpp20xx. На сегодняшний день доступны данные для релизов 2008, 2010, 2012, 2015, и 2017 годов. Здесь я приведу пример использования данных wpp2015, взятый из моего предыдущего поста. Используя тип визуализации ridgeplot, который этим летом получил вирусную популярность (под предыдущим, ныне отвергнутом, названием ggjoy) этим летом благодаря блестящему пакету ggridges Claus Wilke, я покажу впечатляющую конвергенцию ожидаемой продолжительности жизни при рождении у мужчин в мире с 1950 года.   European Social Survey публикует уникально детальные данные о ценностях европейцев, репрезентативные на уровне стран и сопоставимые между странами. Каждые два года проводится очередная волна обследования в каждой из участвующих стран. Данные доступны после бесплатной регистрации. Датасеты распространяются в готовом виде для анализа с помощью SAS, SPSS, или STATA. Благодаря Jorge Cimentada мы имеем теперь возможность заполучить эти данные в готов виде и в R при помощи пакета ess. Я отображу как респонденты оценивали свой уровень доверия местной полиции во всех странах, участвовавших в последней волне опроса.    Сразу несколько пакетов предоставляют доступ к данным переписей США и регулярных выборочных обследований домохозяйств (American Community Survey). Вероятно, наиболее красивая реализация создана недавно Kyle Walker — tidycensus. Kill-feature этого пакета заключается в возможности скачать пространственные данные вместе со статистическими данными. Пространственные данные скачиваются в виде simple features, революционного подхода к геоданным в R, недавно представленного в паекте sf Edzer Pebesma. Этот подход ускорят обработку годанных в десятки раз, при этом упрощая до невозможности код. Но подробности — в заключительном посте серии. Обратите внимание, что для отрисовки simple features нам потребуется установить development версию пакета ggplot2. Карта ниже отражает медианный возраст населения в переписных трактах города Чикаго по данным ACS за 2015 год. Для добычи этих данных с помощью tidycensus придется сперва получить ключ API, что легко можно сделать при регистрации тут.    Демограф