首页 > 解决方案 > 原始数据导入

问题描述

HCA_file.txt文件在标题行中包含每个Client_id、State、DoB的不同类型的信息,在交易行中包含在不同日期执行的不同购买。我需要通过保留client_idState将数据导入 SAS,这样:

  1. 仅导入交易数据#
  2. 仅导入标头数据#

请根据问题帮我解决这个问题。

样本数据

H 1096 CA 01SEP83
C 01JUL11 $156.7
H 1097 VG 07JUL74
C 01FEB11 $109.5
H 1099 OT 13FEB79
C 01Feb11 $109.5

代码

  filename HCA_File '/folders/myfolders/SAS Assignment/Assignment 8 files 
  Part-2/HCA_file.txt' ;

  Data HCA_File1;
  Infile HCA_File Truncover;
  Input Client  Client_Id State DOB @;
  If Client = 'H' then input;
  run;

标签: sas

解决方案


SAS中变量命名规则:

  • SAS 名称的长度取决于分配给它的元素。许多 SAS 名称可以是 32 个字符长;其他的最大长度为 8。
  • 第一个字符必须是英文字母(A、B、C、...、Z)或下划线 (_)。后续字符可以是字母、数字(0、1、...、9)或下划线。
  • 您可以使用大写或小写字母。
  • SAS 名称中不能出现空格。
  • 不允许使用除下划线以外的特殊字符。仅在 filerefs 中,您可以使用美元符号 ($)、井号 (#) 和 at 符号 (@)。

所以问题出在变量中Trans-Amt,您应该将其重命名为Trans_Amt.

SAS 变量名称规则。

更新:

分析数据很困难,但您可以解决程序中的一些问题:

  • output语句而不是if子句中的输入
  • 结束使用文件名时清除文件名(filename HCA_File clear;在数据步骤之后)
  • 当您读取文件标记字符变量时,其长度如下:$8.. 有关输入语句的更多信息,您可以在此处阅读。

解决方案:

filename HCA_File '/folders/myfolders/SAS Assignment/Assignment 8 files 
  Part-2/HCA_file.txt' ;

  Data HCA_File1;
     Infile HCA_File Truncover;
     Input Client $1. Client_Id State $10. DOB $10.;
     If Client = 'H' then output;
  run;

filename HCA_File clear;

推荐阅读