尝试在 SAS 中转换 Y 轴刻度的刻度值

如何解决尝试在 SAS 中转换 Y 轴刻度的刻度值

我试图将 Y 轴刻度的刻度值从 (0 .2 .4 .6 .8 1.0) 转换为 (0 .01 .02 .03 .04 .05),但失败了。但是,转换viewmax时没有这个问题

PROC TEMPLATE;
DELETE Stat.Lifetest.Graphics.ProductLimitFailure2;
SOURCE Stat.Lifetest.Graphics.ProductLimitFailure2 / FILE='C:\Users\Username\Documents\My SAS Files\9.4\tpl.tpl';
QUIT;

DATA _null_;
INFILE 'C:\Users\Username\Documents\My SAS Files\9.4\tpl.tpl' END=eof;
INPUT;
IF _n_ eq 1 THEN CALL execute('PROC TEMPLATE;'); 
   _infile_ = tranwrd(_infile_,'viewmax=1','viewmax=0.05');     /* tranwrd(var,from,to);*/
   _infile_ = tranwrd(_infile_,'tickvaluelist=(0 .2 .4 .6 .8 1.0)','tickvaluelist=(0 .01 .02 .03 .04 .05)');
   CALL execute(_infile_);
IF eof THEN CALL execute('quit;');
RUN;

PROC LIFETEST DATA=for_analysis_1 PLOT=SURVIVAL (FAILURE TEST ATRISK(OUTSIDE(0.10) MAXLEN=26) NOCENSOR) NOTABLE;
TIME Days * Status(0);
STRATA group;

RUN;

**此代码改编自:https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.4/statug/statug_kaplan_sect012.htm

谢谢你,乔

我在 zt 模式下运行 SAS。更改为 EN 模式后,它成功运行。此外,打开 .tpl 文件并手动编辑它也是一种简单的方法!非常感谢。

**更改认的 SAS® 会话编码: https://support.sas.com/kb/51/586.html

解决方法

它对我来说很好。

PROC TEMPLATE;
DELETE Stat.Lifetest.Graphics.ProductLimitFailure2;
SOURCE Stat.Lifetest.Graphics.ProductLimitFailure2 / FILE='....dir....\tpl.tpl';
QUIT;

DATA _null_;
INFILE '....dir....\tpl.tpl' END=eof;
INPUT;
IF _n_ eq 1 THEN CALL execute('PROC TEMPLATE;'); 
   _infile_ = tranwrd(_infile_,'viewmax=1','viewmax=0.05');     /* tranwrd(var,from,to);*/
   _infile_ = tranwrd(_infile_,'tickvaluelist=(0 .2 .4 .6 .8 1.0)','tickvaluelist=(0 .01 .02 .03 .04 .05)');
   CALL execute(_infile_);
IF eof THEN CALL execute('quit;');
RUN;

proc lifetest data=sashelp.BMT
   plots=survival(cb=hw failure test atrisk(outside maxlen=13));
   time T * Status(0);
   strata Group;
run;

你可以做的测试是,首先,运行这个确切的代码(使用内置数据集);如果可行,那么您就知道这是您的数据的问题。其次,我想知道您是否可能对字符编码有一些问题(我在 EN-US 模式下运行,您使用的是 UTF-8 吗?空格是真正的空格,还是“A0”x 网络空格?)。 TRANWRD 是这里使用的“锤子”。也许可以考虑使用不同的方式来更改更易于调试的值。至少,通过一些 PUT 语句逐步检查 TRANWRD 是否真的在执行任何操作(在该行之前/之后,PUT infile 值如果找到“tickvaluelist”)。

还要考虑刻度值列表可能跨行分隔。打开 .tpl 文件,看看你有什么!没有什么说你需要这样做 - 你可以直接编写 PROC TEMPLATE 代码。我可能会做的是运行第一个 PROC TEMPLATE 将其作为文件来源,然后手动编辑它,然后将其作为代码的一部分运行。不这样做的唯一原因是,如果您想根据数据中的内容以编程方式更改刻度值列表,但即便如此,您也可以做不同的事情 - 就像使用宏变量一样。

以下是对我有用的内容和图片。

PROC LIFETEST output with 0.00-0.05 Y axis

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?