为什么SAS程序的字符串中有space(企业指南8.3)
why there is space in the string at SAS program (enterprise guide 8.3)
我在SAS enterprise guide 8.3中编写代码,发现文件名中有space。任何人都知道为什么?有关详细信息,请参考随附的屏幕截图。 space 在字符“Y_2021”之后;谢谢
year1
由连接运算符用空格填充。更好的做法是使用 cats
、catt
或 catx
而不是 ||
运算符进行串联。这些函数确保不会填充连接的值。
改用下面的代码。
csvfile_temp = cats('Y_', year1, '0101_', dateyyyymmdd, '.csv');
SAS 有两种类型的变量。浮点数和固定长度字符串。
您尚未明确设置任何变量的类型或长度,因此 SAS 必须根据它们在代码中的首次使用方式来决定如何定义它们。由于 TODAY1 使用宽度为 8 的格式获取 PUT() 函数的结果,因此它将被定义为长度 $8。由于其他变量首先被视为在 TODAY1 上运行的函数的结果,因此它们也将被定义为长度 $8.
所以你的第二个和第三个赋值语句中的 TRIM() 函数调用没有做任何事情。它删除尾随空格,然后将值存储回固定长度的变量,这意味着该值再次被填充到 8 个字节。
您可以在使用之前定义变量。
length today1 year1 ;
您还可以使用您确定会导致 SAS 定义所需长度的语句来创建变量。
today = today();
year = put(today,year4.);
dateyyyymmdd = put(today,yymmddn8.);
如果您确实需要连接可能具有短值的变量,请将 TRIM() 函数调用添加到需要修剪值的位置。或者更好的是仍然使用 CATS() 函数而不是连接运算符。
我在SAS enterprise guide 8.3中编写代码,发现文件名中有space。任何人都知道为什么?有关详细信息,请参考随附的屏幕截图。 space 在字符“Y_2021”之后;谢谢
year1
由连接运算符用空格填充。更好的做法是使用 cats
、catt
或 catx
而不是 ||
运算符进行串联。这些函数确保不会填充连接的值。
改用下面的代码。
csvfile_temp = cats('Y_', year1, '0101_', dateyyyymmdd, '.csv');
SAS 有两种类型的变量。浮点数和固定长度字符串。
您尚未明确设置任何变量的类型或长度,因此 SAS 必须根据它们在代码中的首次使用方式来决定如何定义它们。由于 TODAY1 使用宽度为 8 的格式获取 PUT() 函数的结果,因此它将被定义为长度 $8。由于其他变量首先被视为在 TODAY1 上运行的函数的结果,因此它们也将被定义为长度 $8.
所以你的第二个和第三个赋值语句中的 TRIM() 函数调用没有做任何事情。它删除尾随空格,然后将值存储回固定长度的变量,这意味着该值再次被填充到 8 个字节。
您可以在使用之前定义变量。
length today1 year1 ;
您还可以使用您确定会导致 SAS 定义所需长度的语句来创建变量。
today = today();
year = put(today,year4.);
dateyyyymmdd = put(today,yymmddn8.);
如果您确实需要连接可能具有短值的变量,请将 TRIM() 函数调用添加到需要修剪值的位置。或者更好的是仍然使用 CATS() 函数而不是连接运算符。