Причина, по которой вы не видите гистограммы в выходных PDF-файлах, двойная:
- SASmarkdown поддерживает только выходные данные LISTING и HTML (см. Ссылку ниже).
- Когда вы используете опцию
noprint
в своем выражении proc univariate
, вы удаляете вывод списка SAS.
Элемент (1) следует из расширенной документации пакета (ссылка указана в документация пакета): https://www.ssc.wisc.edu/~hemken/SASworkshops/Markdown/SASmdpackage.html
где написано ( полужирный добавлен мной для выделения соответствующих точек):
Когда вы загружаете пакет SASmarkdown, шесть модулей SAS определены и готовы к использованию. Все они запускают ваш код SAS, но возвращают различный вывод в ваш документ. Это
sas - это возвращает код SAS, который вы запустили, и обычный ("перечисление") вывод
saslog - это возвращает журнал SAS вместо вашего кода, и обычный вывод SAS
sas html - возвращает код SAS и вывод SAS HTML
sashtmllog - возвращает журнал SAS и вывод SAS HTML
sas html5 - возвращает код SAS и вывод SAS HTML со встроенной графикой
sashtml5log - возвращает журнал SAS и вывод SAS HTML
Что касается (2), учитывая, что вы не можете отправить HTML вывод в файл PDF, я бы сказал, что единственный вариант, который у вас есть, чтобы включить какой-либо график с распределением ваших переменных в вывод PDF, - это генерировать участки в выводе листинга. В этом случае вместо гистограммы вы увидите график стволовых и листьев.
Для этого вы можете сделать следующее:
- отключить
ods graphics
, используя инструкцию ods graphics off;
, - добавить параметр
plots
в оператор proc univariate
.
Эта настройка следует из документации PROC UNIVARIATE
:
УЧАСТКИ | PLOT <()> создает панель графиков для каждой переменной анализа. Если включена графика ODS, панель содержит горизонтальную гистограмму, коробочную диаграмму и диаграмму нормальной вероятности. В противном случае процедура создает график на основе ствола и листа (или горизонтальную гистограмму), блок-диаграмму и график с нормальной вероятностью с использованием вывода на строчный принтер.
Я использовал следующий код для проверьте это, и все заработало, как и ожидалось:
library(knitr)
library(rmarkdown)
indoc <- '
---
title: "Stem and leaf plot generated in LISTING output"
output: pdf_document
---
# Setup
```{r}
library(SASmarkdown)
sasexe <- "C:/Program Files/SASHome/SASFoundation/9.4/sas.exe"
sasopts <- "-nosplash -ls 75"
```
```{r SteamAndLeafPlots, engine="sas", engine.path=sasexe, engine.opts=sasopts}
ods graphics off;
proc univariate data=sashelp.class plots;
var age;
run;
ods graphics on;
```
'
knitr::knit(text=indoc, output="test.md")
rmarkdown::render("test.md")
Частичный вывод PDF показан ниже: