【问题标题】:SAS - proc import with excel file, dbms not validSAS - 使用excel文件导入proc,dbms无效
【发布时间】:2018-03-26 12:31:51
【问题描述】:

我有一个要导入 SAS 的 .xls excel 文件(Microsoft Excel 97-2003 工作表)。所以我用了:

proc import datafile = "C:\Users\***\***\data.xls" 
        out = data dbms = EXCEL;
run;

但是我收到以下错误:

错误:DBMS 类型 EXCEL 对导入无效。

我尝试了不同的 DBMS(在很多情况下我并没有真正理解差异,只是对 EXCEL97、EXCEL4、EXCEL5、XLS 进行了猜测)。这些都不起作用。你知道如何处理吗?

前几列如下所示:

id      status      start       end         duration   browser    browserversion   country              Age
51      complete    03/08/2016  03/08/2016  0:21:57    Chrome     65.0             1                    51
133     complete    03/08/2016  03/08/2016  0:10:07    Chrome     58.0             1                    18
1002    complete    03/08/2016  03/08/2016  0:17:57    Chrome     58.0             1                    40

【问题讨论】:

  • 您有 SAS/访问 PC 文件的许可证吗?
  • 如何检查?如果它是一种应用程序(如 sas 企业指南)那么可能不是
  • 运行proc setinit; run;
  • 好吧,我不这样做。
  • 将工作表另存为 CSV 文件并使用数据步骤读取。

标签: excel sas


【解决方案1】:

您需要有执照。运行 PROC SETINIT 并查看您是否已获得此产品的许可。

---SAS/ACCESS Interface to PC Files

如果不是,则将 excel 文件保存为 CSV 文件并使用数据步骤读取它。这真的很容易。

data myfile ;
  infile "C:\Users\***\***\myfile.csv" dsd firstobs=2 truncover ;
  length varfirst 8 var2 $30 .... varlast $5 ;
  input varfirst -- varlast ;
run;

为需要它们的任何变量(例如日期)添加 INFORMAT 和 FORMAT 语句。普通字符或数字变量不需要 INFORMAT 或 FORMAT,SAS 就能正确读取或显示它们。

【讨论】:

  • 这很有帮助。但是,我有大约 200 列,因此一个接一个地指定它们的长度是相当乏味的。我曾尝试将 proc import 与 csv 文件一起使用,但它在一列和一行中读取所有内容,数据以分号分隔。在 Csv 文件中,我在单独的列中有数据。这是我用的proc import datafile = "C:\Users\***\***\my_file.csv" out = data dbms = csv replace; run;有没有办法修复它?
  • 如果文件结构良好,那么 200 列并不是真正的问题。例如,您可能只有一个 ID 变量和 199 个数字变量。 length id $10 var1-var199 8;
  • 您需要告诉 SAS 使用什么分隔符。听起来您想使用 dbms=dlm 并添加 delimiter=';'; 语句。
  • proc import datafile = "C:\Users\***\myfile.csv" out = data dbms = dlm replace; delimiter = ';' ; run; 没有用。我的文件还包含不同长度的列(例如,长度为 2 或 3 甚至 4 的 id),所以我认为数据步骤不会在这里做。真的很感谢你的努力!
  • 如果您需要语法方面的帮助来阅读您的文件,请发布几行文本。您可能不需要显示所有 200 列。编辑问题或开始新问题。定义 200 个变量的长度所花费的时间只是您试图让 SAS 猜测文件中的内容所花费的时间的一小部分。您可以从数据文件中复制标题并将其编辑为length 语句。数字变量的长度始终为 8,对于字符,它们只会使它们比您预期的要长。您可以稍后更改并重新运行。
【解决方案2】:

请尝试使用 Dbms = xlsx 或 dbms = xls。适用于旧版 Microsoft office xls 引擎。

【讨论】:

  • 正如我之前提到的,我尝试过 XLS。现在我试了一下 XLSX。它们都不起作用。
  • xlsx 是给我的。谢谢。非常感谢,如果我使用的是 SAS University,是否会在某个时候获得该功能?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-02
  • 2015-12-05
  • 2022-08-12
  • 2019-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多