【问题标题】:sas proc import txt wth delimiter inside observationssas proc import txt 在观察中带有分隔符
【发布时间】:2014-11-14 05:43:48
【问题描述】:

作为 SAS 9.3 的新用户,我的第一个问题。我想使用 proc import 读取一个带有 dlm=',' 的大文本文件。但是有一个变量在某些 obs 之间有“,”,例如。 “康涅狄格州哈特福德”。 (不是全部,其他像“XL Center”)。在使用 proc 导入此文本文件时,有什么方法可以像“XL Center”一样将“Hartford, CT”读入一个变量? 非常感谢

在这里编辑:对不起,我不应该在记录周围加上引号。任何记录上都没有引号,无论是 XL 中心还是康涅狄格州哈特福德。当 dlm 设置为逗号时,该行有 Hartford,CT 在额外的列上生成,然后将记录转移到错误的列中。

【问题讨论】:

  • 您确定分隔符不是真正的 '","',例如 "Hartford, CT","F","43"?这在挪威很正常。
  • 这是一个博客,它给出了另一个例子,其中有逗号的字段用引号括起来:blogs.sas.com/content/sastraining/2010/11/19/…
  • 感谢您发帖。尽管我的问题仍然存在,但它的作用就像一个魅力,因为在我的案例中没有引号。

标签: import sas delimiter


【解决方案1】:

只要您的文本文件在分隔符周围有引号,它就会自动工作。例如:

/* example data */
data _null_;
   file "%sysfunc(pathname(work))/some.csv"; 
   put 'head1,head2,head3';
   put 'XL Center,1,"Hartford, CT"';
run;

/* import */
proc import datafile="%sysfunc(pathname(work))/some.csv" 
     out=example
     dbms=dlm
     replace;
     delimiter=",";
     datarow=2;
run;

【讨论】:

  • 没有足够的 RP 投票,否则我会这样做。虽然我的问题仍然存在,因为记录中没有引号需要合并。
  • 在这种情况下,您将不得不返回数据源提供者并要求他们提供可读格式(没有软件可以以这种方式读取数据)。另一种方法(如果您有一个封闭的示例列表,例如 )是首先处理数据以将此类示例包装在“in,quotes”中 - 然后使用 proc import 或其他方式读取它..跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多