代码之家  ›  专栏  ›  技术社区  ›  r.user.05apr

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

  •  0
  • r.user.05apr  · 技术社区  · 6 年前

    导入一个Excel文件(列名已给出)后,我得到一个列,其名称为“运输成本[信用证/装运]”,变量的标签为“运输成本[信用证/装运]”(请注意右方括号),这是正确的Excel列名。

    我想重新命名“运输成本[信用证/装运],但不包括字符。我所拥有的是:

    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;
    

    因为在本例中,我可以使用full==“right”列名。

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

    谨致问候

    1 回复  |  直到 6 年前
        1
  •  1
  •   Reeza    6 年前

    SAS有两个命名约定。一个不允许空格,但另一个允许,如果你用引号将变量括起来,s a s需要一种方法来区分变量名和字符串。它通过在引号后立即添加字母来实现这一点,因此您使用的是名称文本。

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

    不幸的是,另一个命名约定是名称不能超过32个字符。SAS通常会截短超过的名称。我可以看到你有两个选择。

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

    options validvarname=v7;
    

    第二种方法是使用PROC CONTENTS或explorer,找到被截断的名称并将其重命名为与上面的类似的名称。