【问题标题】:SAS 9.4 proc import column names with getnames=noSAS 9.4 proc 使用 getnames=no 导入列名
【发布时间】:2016-02-05 14:58:00
【问题描述】:

我在更新代码以使用 SAS 9.4,特别是 Proc Import 时遇到了一些问题。我有一堆乱七八糟的数据,我为其指定了“getnames=no”。在 9.3 中,默认的列名是 F1、F2、F3 等。然后我有一堆代码来清理数据、重命名变量等。

在 9.4 中,默认列名是 A、B、C 等,所以我的旧代码都不起作用。是否可以更改设置或选项以使用 F1、F2、F3 命名约定而不是 A、B、C?

谢谢。

【问题讨论】:

  • 文档对此次更改有何评论?
  • 我找不到任何表明有变化的东西。我正在从 PC 上的基本 9.3 SAS 迁移到服务器上的 9.4 SAS Studio,因此有几个移动部件。这可能根本不是代码问题。
  • 我也一直在寻找,但没有找到任何东西。在 support.sas.com 上搜索一些使用说明、示例等,也许你会找到一些东西。如果您必须走那条路线并且需要帮助发布另一个问题,您“可以”很容易地代码生成重命名。
  • 在您的问题中添加一些代码,这会有所帮助。例如,您是否将 DBMS 从 EXCEL 更改为 XLSX?还是根本不指定 DBMS?
  • 还有- 什么样的服务器?

标签: sas naming-conventions import-from-excel


【解决方案1】:

为什么不使用 PROC DATASETS 重命名所有变量?您可以使用 PROC CONTENTS 加上 PROC SQL 来创建 RENAME 语句。

PROC CONTENTS DATA=imported OUT=impcont NOPRINT ;
RUN ;

PROC SQL ;

  SELECT COMPRESS(name || '=f' || PUT(varnum,3.))
    INTO :renamestmt SEPARATED BY ' '
    FROM impcont
  ;

QUIT ;

PROC DATASETS LIBRARY=work NOLIST ;
  MODIFY imported ;
    RENAME &renamestmt ;
  RUN ;
QUIT ;

【讨论】:

  • 你是不是忘了什么? COMPRESS(name || '=f' || PUT(varnum,3.) maybe ) 关于 VALIDVARNAME 选项作为 CATX('=F',nliteral(name),varnum)
  • 谢谢!错过了右括号。我还需要学习更频繁地使用 CAT 功能。如果 OP 没有声明名称是自动分配的,我同意 NLITERAL 会很有用。
猜你喜欢
  • 2018-07-22
  • 2019-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 2023-04-08
  • 2015-12-05
相关资源
最近更新 更多