在SAS中将数字变量转换为字符

时间:2018-06-05 12:07:22

标签: sas character numeric

我有两个数据集,都有相同的变量名。在其中一个数据集中,两个变量具有字符格式,但在另一个数据集中,所有变量都是数字。我使用以下代码将数字变量转换为字符,但数字正在改变490.6 - > 491。 如何进行转换以使数字不会改变?

data tst ;
set data (rename=(Day14=Day14_Character Day2=Day2_Character)) ;
Day14 = put(Day14_Character, 8.) ;
Day2 = put(Day2_Character, 8.) ;
 drop Day14_Character Day2_Character ;
 run;

2 个答案:

答案 0 :(得分:0)

将格式更改为Best8.2:

@Autowire
MyClassObject myClassObject;

以下是一个例子:

 data tst ;
   set data (rename=(Day14=Day14_Character Day2=Day2_Character)) ;
   Day14 = put(Day14_Character, best8.2) ;
   Day2 = put(Day2_Character, best8.2) ;
   drop Day14_Character Day2_Character ;
 run;

如果您不想指定小数点的宽度和数量,可以使用 data test; input r ; datalines; 500.04 490.6 ; run; data test1; set test; num1 = put(r, 8.2); run; 信息,SAS将根据输入数据自动分配宽度和小数。但是,除非明确指定结果变量,否则结果变量的长度可能很大。这仍将保留原始变量中的数字。

答案 1 :(得分:0)

您发布的代码很混乱。其中一半看起来像是从字符转换为数字的代码,而另一半看起来就像是另一个方向。

要转换为字符,请使用PUT()功能。通常,您需要左对齐生成的字符串。您可以使用格式规范末尾的-L修饰符来左对齐值。

因此,要将数字变量DAY14和DAY2转换为长度为$ 8的字符变量,您可以使用以下代码:

data want ;
  set have (rename=(Day14=Day14_Numeric Day2=Day2_Numeric)) ;
  Day14 = put(Day14_Numeric, best8.-L) ;
  Day2  = put(Day2_Numeric, best8.-L) ;
  drop Day14_Numeric Day2_Numeric ;
run;

请记住,您使用PUT语句或PUT()函数与格式将值转换为文本。您可以使用INPUT语句或INPUT()函数与信息将文本转换为值。