在SAS中小数点前加零

在SAS中小数点前加零,sas,Sas,您好,我需要添加一个零,只有结果和范围是在.2,.3等格式,但不是高值是这样的。最有效的方法是什么 我只尝试使用w.d格式化它,但问题是并非所有值都是相同的,我要做的就是在它们适用的地方添加一个零,而不会弄乱其他值的格式 格式lborres lbornlo lbornhi z7.2 如果变量是数字,则可以应用标准格式,并添加前导零 即 如果变量为character,则可以测试第一个字符是否为句点并添加0,或者可以将其转换为数字并以这种方式存储。选项2首先显示为第一个选项覆盖变量,以避免后面显示的

您好,我需要添加一个零,只有结果和范围是在.2,.3等格式,但不是高值是这样的。最有效的方法是什么

我只尝试使用w.d格式化它,但问题是并非所有值都是相同的,我要做的就是在它们适用的地方添加一个零,而不会弄乱其他值的格式

格式lborres lbornlo lbornhi z7.2


如果变量是数字,则可以应用标准格式,并添加前导零

如果变量为character,则可以测试第一个字符是否为句点并添加0,或者可以将其转换为数字并以这种方式存储。选项2首先显示为第一个选项覆盖变量,以避免后面显示的任何问题

data want;
   set yourInputDataSet;

   *Option 2;
   new_numeric_variable = input(yourVariable, 8.);
   format new_numeric_variable 8.1;

   *Option 1;
   if yourVariable =: '.' then yourVariable = catt('0', yourVariable);


run;

和往常一样,如果变量的格式不正确,我会检查数据导入步骤,看看是否可以在那里而不是事后修复它。如果在文本文件上使用PROC IMPORT,则尤其如此。在文本文件中,您可以在读取变量格式和类型时轻松控制它们。

您的值是否都小于1?例如

.3
.002
.752
.056
如果没有,您必须为每个单元创建图片格式(千、百、十等)

如果它们都小于1,我相信z5.3会给你-5是总长度,3是小数点的数目

data test;
  format A z5.3;
  a=.3; output;     /* 0.300 */
  a=.002; output;   /* 0.002 */
  a=.752; output;   /* 0.752 */
  a=.056; output;   /* 0.056 */
run;

你需要提供更多的细节,特别是你有什么和你想要什么。给我们举几个例子。因此,您还应该包括您迄今为止尝试过的任何内容。@reeza我无法显示图像,但我添加了更多上下文。如果需要,请键入一个虚构的示例,并确定您拥有的内容与您想要的内容。是否希望值显示为0.5而不是0.5?这就是你们要问的问题吗?他们都是性格使然,意识到格式语句行不通。我更新了sas数据集的图像。运行它并进行检查,注意
=:
的用法,而不仅仅是等号。这很有效。非常感谢您的帮助,这种用法在将来会非常有用
data test;
  format A z5.3;
  a=.3; output;     /* 0.300 */
  a=.002; output;   /* 0.002 */
  a=.752; output;   /* 0.752 */
  a=.056; output;   /* 0.056 */
run;