在SAS中将变量的值ODS到rtf文件的最简单方法是什么
将变量值ODS到rtf文件的最简单方法是什么 不显示表或列。 如果可能的话,我宁愿不使用宏来完成这项工作 提前感谢我的朋友们两种选择:在SAS中将变量的值ODS到rtf文件的最简单方法是什么,sas,Sas,将变量值ODS到rtf文件的最简单方法是什么 不显示表或列。 如果可能的话,我宁愿不使用宏来完成这项工作 提前感谢我的朋友们两种选择: ods proctitle=no; options nodate nonumber; title; ods rtf file="d:\temp\test.rtf" style=minimal; proc print data=sashelp.class(where=(name='Alfred')) noobs label style={borderstyle=
ods proctitle=no;
options nodate nonumber;
title;
ods rtf file="d:\temp\test.rtf" style=minimal;
proc print data=sashelp.class(where=(name='Alfred')) noobs label style={borderstyle=none};
var age;
label age='00'x;
run;
data _null_;
set sashelp.class;
where name='Alfred';
declare odsout ODS();
ods.format_text(data:age);
run;
ods rtf close;
后者正是您想要的,但RTF不完全支持后者。请参阅日志。前者或多或少做你想做的事;仍然有一个标题行,但它是空的
正如在评论中指出的,如果有更多的上下文,这就不是一个完全相同的问题。如果ODS不是一个要求,并且您只需要使用最简单和最快的方法,那么您总是可以将值直接写入扩展名为.rtf的文件。如果需要的话,这将产生最干净的RTF输出 简单版本: 这取决于文件的接收者以及他们将如何使用该文件。生成的文件将在say Word和大多数.RTF阅读器中完全打开 更复杂的版本: 如果您需要有效的.RTF语法,还可以为有效的RTF添加最小语法,从我收集的数据来看如下所示:
{\rtf1\ansi\f0
Hello
}
data _null_;
file "c:\test.rtf";
set mytable end=eof;
if _n_ eq 1 then do;
put "{\rtf1\ansi\f0";
end;
put my_variable;
if eof then do;
put "}";
end;
run;
生成上述内容的代码:
data _null_;
file "c:\test.rtf";
put "{\rtf1\ansi\f0";
put "Hello";
put "}";
run;
如果表中有一个变量,可以将它们全部打印到.rtf文件中,如下所示:
{\rtf1\ansi\f0
Hello
}
data _null_;
file "c:\test.rtf";
set mytable end=eof;
if _n_ eq 1 then do;
put "{\rtf1\ansi\f0";
end;
put my_variable;
if eof then do;
put "}";
end;
run;
参考文献:和维基百科.< /p> 如果你已经有其他文本进入你的RTF,你需要变量的值放在内联中,那么我认为最明智的方法是将值存储在宏变量中,并把它放在RTF中的文本中间。如果您希望将宏逻辑保持在最小值,则可以在数据步骤中通过调用symput生成宏变量,或根据您的偏好通过proc sql选择into。例如
proc sql noprint;
select Age
into :Alfred_age
from sashelp.class
where name = 'Alfred';
quit;
ods listing close;
ods rtf file = "C:\temp\test1.rtf";
ods rtf text = "Alfred's age is %sysfunc(strip(&Alfred_age)).";
ods rtf close;
ods listing;
您希望rtf文件中除了有问题的值之外没有任何内容,还是希望能够将该值放在更复杂的rtf中?该值是否需要与现有文本内联放置?是的,你是对的,我希望能够将该值放置在各种文本中更复杂的rtf中。它确实需要与现有文本放在一起