【问题标题】:SAS Infile statement errors when trying to read in CSV file尝试读取 CSV 文件时出现 SAS Infile 语句错误
【发布时间】:2015-02-13 18:08:28
【问题描述】:

我的数据如下所示(这是一个非常小的子集)。这是一个 CSV 文件,实际上是按列分隔的,因此可以在 Excel 中轻松读取。

ParentFlag CurrentBalanceF ValuationAmountO ValuationDateO ValuationDateC

家长 85481.49 145000 13/02/2004 30/04/2009

我正在尝试使用以下代码导入我的数据。

filename indata '&location.\AE&CO - inputs - 2014 09 30 Sept.csv';

Data treasury;
    Infile indata firstobs=2 dlm=" "
/*  delimiter=','*/
; 
/*  Length ext_acno $14.;*/
/*  informat original_val_dt date9. current_val_dt date9. ;*/
  input pcd_acno $ 1 ext_acno $ 2 loan_acno $ 3 acno $ 4 account_bal $ 5 trust_id $ 6 parentflag $ 7 account_bal_f 8 
        original_val_amt 9 original_val_dt 10 current_val_dt 11 original_val_type 12 
        current_val_type 13 indexed_ltv 14 original_ltv_wo_fees 15 latest_ltv 16 account_status_rbs $ 17 ;
;
run;

但是,日志给了我错误,并且数据没有正确导入。我的数据集的字段只有一个字符可见(例如,上面的 parentflag 字段只有一个 0)。

我尝试使用导入向导执行此操作,它在一定程度上起作用,但日志显示“导入不成功”消息,尽管我的表填充正确...

理想情况下,我想让 infile 语句正常工作,因为它感觉像是一个更坚固的替代品。目前,它只是不正常,我不知道为什么!有人可以帮忙吗?

【问题讨论】:

    标签: csv import sas


    【解决方案1】:

    您需要删除美元符号后面的那些数字。

    input pcd_acno $ ext_acno $ loan_acno $ ... ;
    

    这些数字只是让 SAS 感到困惑,它们没有任何用途。它们使 SAS 认为您正在尝试进行某种列输入,但您希望在此处输入列表。 Column 表示一个字符长的列,而不是您使用它的意思; “CSV”表示“逗号分隔值”,而不是“列”。

    IE:

    ABCDE FGHIJ KLMNO
    

    上面第5列是“E”,第9列是“H”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 1970-01-01
      相关资源
      最近更新 更多