【问题标题】:What am I doing wrong while importing the following data into sas将以下数据导入 sas 时我做错了什么
【发布时间】:2013-08-25 09:59:14
【问题描述】:

我正在尝试使用这段代码将某些数据导入到我的 SAS 数据集中:

数据名称_And_More;

Infile 'C:\Users\Admin\Desktop\Torrent Downloads\SAS 9.1.3 Portable\Names_and_More.txt';
Input Name   &  $20. 
      Phone  :  $20.  
      Height &  $10.  
      Mixed  &  $10.;
run;

文件中的数据如下:

Roger Cody (908)782-1234 5ft. 10in. 50 1/8
Thomas Jefferson (315)848-8484 6ft. 1in. 23 1/2
Marco Polo (800)123-4567 5Ft. 6in. 40
Brian Watson (518)355-1766 5ft. 10in 89 3/4
Michael DeMarco (445)232-2233 6ft. 76 1/3

我一直在尝试学习 SAS,在阅读 Ron Cody 的书 Learning SAS by example 时,我发现要导入上述类型的数据,我们可以使用“&”信息修饰符。与冒号一样,与号表示使用提供的信息,但分隔符现在是两个或多个空格,而不仅仅是一个。 (罗恩的话,不是我的话)。但是,在导入时,结果(数据集)如下:

                          Name            Phone      Height        Mixed

                  Roger Cody (908)782-    Thomas    Jefferson    Marco Polo

此外,SAS 日志的详细信息如下:

419 个数据名称_And_More; 420 Infile 'C:\Users\Admin\Desktop\Torrent 下载\SAS 9.1.3 Portable\Names_and_More.txt'; 421 输入名称和 20 美元。 422 电话:20 美元。 423 身高和 10 美元。 424 混合 & 10 美元。 425 ;跑;

注意:

infile 'C:\Users\Admin\Desktop\Torrent Downloads\SAS 9.1.3 Portable\Names_and_More.txt' 是: 文件名=C:\Users\Admin\Desktop\Torrent Downloads\SAS 9.1.3 Portable\Names_and_More.txt, RECFM=V,LRECL=256

注意:

丢失的卡片。 姓名=Brian Watson (518)35 电话=Michael Height=DeMarco (4 Mixed= ERROR=1 N=2 注意:从 infile 'C:\Users\Admin\Desktop\Torrent Downloads\SAS 9.1.3 中读取了 5 条记录 便携式\Names_and_More.txt'。 最小记录长度为 37。 最大记录长度为 47。 注意:当 INPUT 语句到达行尾时,SAS 转到新行。 注意:数据集 WORK.NAMES_AND_MORE 有 1 个观察值和 4 个变量。 注意:使用的 DATA 语句(总处理时间): 实时 0.17 秒 cpu时间0.14秒

我正在为此寻求帮助。如果有人能解释到底发生了什么,我做错了什么以及如何纠正这个错误,那就太好了。

谢谢

【问题讨论】:

  • 真的吗?洪流下载?至少假装是合法的......
  • 我并不为此感到自豪,但它就是这样

标签: import sas


【解决方案1】:

答案在 Ron Cody 书中的解释中。 & 表示您需要两个空格来分隔变量;所以您需要在名称后添加第二个空格(以及其他带有 & 的字段)。

错误:

Roger Cody (908)782-1234 5ft. 10in. 50 1/8

对:

Roger Cody  (908)782-1234 5ft. 10in.  50 1/8

【讨论】:

  • 感谢 Joe 的澄清,我猜只是没有正确阅读全文
  • 我想知道您是否可以帮助我解决另一个 SAS 问题,这样可以避免我开始另一个线程。问题是我正在使用输入函数来定义一个变量日期,如下所示: date = input('13mar2000'd,date9.) 当我在数据集上运行 proc contents 时,长度显示为 8。不应该是9?
  • 如果您还有其他问题,您应该开始另一个问题 - cmets 不是一个好地方(或一个容易回答的地方)。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 2015-11-29
  • 1970-01-01
  • 2013-08-10
相关资源
最近更新 更多