我有两个数据集,都有相同的变量名。在其中一个数据集中,两个变量具有字符格式,但在另一个数据集中,所有变量都是数字。我使用以下代码将数字变量转换为字符,但数字正在改变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;
答案 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()
函数与信息将文本转换为值。