Создайте файл SDMX в R

У меня нет кода для публикации, а просто вопрос. Я знаю несколько инструментов для чтения файлов SDMX в R (SDMX — это файл XML для обмена статистическими данными), например,

https://github.com/opensdmx/rsdmx

https://github.com/amattioc/SDMX

но кто-нибудь знает способ экспортировать некоторые данные в формат SDMX для распространения? Любое предложение приветствуется!


person larry77    schedule 21.04.2021    source источник


Ответы (1)


Это не «чистое» решение R, но пакет Python sdmx1 можно полностью использовать через reticulate и позволяет программно генерировать объекты SDMX, а затем сериализовать их как SDMX-ML (XML). Например:

# Use reticulate to import the Python package
> library(reticulate)
> sdmx <- import("sdmx")

# Create an (empty) DataMessage object
> msg <- sdmx$message$DataMessage()

# Convert to XML
> xml <- sdmx$to_xml(msg, pretty_print = TRUE)

# Write to file using the built-in R method
# The Python 'bytes' object must be decoded to a string
> write(xml$decode(), file = "message.xml")

Это дает вывод, например:

<mes:GenericData xmlns:com="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/common" xmlns:data="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/data/structurespecific" xmlns:str="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/structure" xmlns:mes="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/message" xmlns:gen="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/data/generic" xmlns:footer="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/message/footer" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <mes:Header>
    <mes:Test>false</mes:Test>
  </mes:Header>
</mes:GenericData>

Дополнительную информацию о создании более сложных сообщений с помощью sdmx1 можно найти на странице "HOWTO Generate SDMX-ML из объектов Python» в документации.

person Paul Natsuo Kishimoto    schedule 29.05.2021
comment
Спасибо. Не могли бы вы сделать репрекс? Это облегчило бы мне жизнь! - person larry77; 30.05.2021
comment
Извините, я не очень хорошо пользуюсь R и поэтому даже не знаю, что такое репрекс! Код в первом фрагменте полный завершен, если вы это имеете в виду, и будет работать до тех пор, пока у вас установлены reticulate (R) и sdmx1 (Python). - person Paul Natsuo Kishimoto; 30.05.2021