Как вставить значение #byval в имя файла png при использовании sgplot с оператором by в SAS - PullRequest
1 голос
/ 13 мая 2019

Я делаю несколько изображений PNG, используя sgplot и оператор by, например:

ods html path="&graphPath" body="index.html"
    image_dpi=300 style=sciensano1 device=png;

ods graphics on / reset noborder imagename="boom"
    height=10cm width=16cm ;

title;footnote;
options byline;
proc sgplot data=sashelp.class;
    histogram height;
    by Sex;
    run;quit;

ods html close;

Это создает 1 HTML-файл (index.html)
и 2 файла png (boom1.png & boom3.png)

Мне интересно, можно ли назвать файлы png в соответствии со значениями by. Например, добавив #byval в заголовок.

В настоящее время числа добавляются автоматически в imagename из ods graphics, я хотел бы избавиться от чисел и использовать вместо них знак байла.

Единственное решение, которое у меня есть, - это сделать все графики по отдельности, используя цикл% do в макросе, чтобы я мог параметризовать имя изображения и присвоить ему имя макропеременной. Проблема в том, что его гораздо сложнее реализовать и гораздо медленнее.

РЕДАКТИРОВАТЬ: Использование SAS 9.3

Ответы [ 2 ]

1 голос
/ 13 мая 2019

В моем SAS 9.4M4 такой функции нет ни в параметрах SGPLOT HISTOGRAM, ни в ODS GRAPHICS IMAGENAME или INDEX.

В идеале в будущем выпуске будет ODSчесть #BYVAL и #BYVAR варианты подстановки.

ods graphics / imagename="boom#byval1";       * not real;
ods graphics / imagename="boom#byval(sex)";   * not real;

или

ods graphics / imagename="boom" reset=index(#byval1); * not real;

Откат:

Операторы процедуры GCHART, такие как VBAR поддерживает опцию name=, которая поддерживает опцию #BYVAL.

vbar height / name="basename#byval1";  * creates gfx file whose name contains the by var value;
0 голосов
/ 21 июня 2019

Похоже, эта функция есть в v9.4M5 - копайте ее: В ногу с графикой ODS .

...