使用空格和长度ge 32个字符重命名SAS变量



导入Excel文件(给定列名(后,我得到一个名为"运输成本[LC/Shipment"的列,变量的标签是"运输成本/LC/Shipment]"(请注意最后的方括号(,这是正确的Excel列名。

我想重命名"运输成本[LC/Shipment",但不计算字符。我有:

Rename 'Transportation Cost [LC/Shipment'n=Ship_Costs;

这是有效的。

Rename 'Transportation Cost [LC/Shipment]'=Ship_Costs;

给出错误,因为名称长度超过32个字符。

如何使用Excel全名重命名变量?

在我看来,一个好的解决方案类似于:

Rename Substr('Transportation Cost [LC/Shipment]', 1, 32) = Ship_Costs;

因为在这种情况下,我可以使用完整的=="right"列名。

附加问题:后面的"n"到底是什么意思,它像Python的原始字符串吗?

Thx&向致意

SAS有两种命名约定。一个不允许空格,但另一个允许,如果你用引号括住变量,SAS需要一种方法来判断这是变量名还是字符串。它通过在引号后面立即添加字母来实现这一点,所以您使用的是名称文字。

n->名称文字d->日期文字t->时间文字dt->日期时间文字

不幸的是,另一种命名约定是名称不能超过32个字符。SAS通常会在名称溢出时截断该名称。我能看到你有两个选择。

一种是切换命名模式,以便SAS导入它并进行一些转换,但您仍然需要清理它。将validvarname选项设置为V7,另一个选项为ANY,重新导入数据,然后尝试重命名。

options validvarname=v7;

第二种方法是使用PROC CONTENTS或资源管理器,找到截断的名称并将其重命名为类似于上面的名称。

最新更新