SAS:用日期导入CSV文件



我当前正在尝试将zipped CSV文件导入SAS,并且我有3列,其中包含以格式编写的日期yyyy-mm-dd。此CSV文件中的所有数据都处于唯一的行,因此我认为它是一个字符串,而不是被识别为数字(对不起,我最近才开始编码,我仍在学习很多基础知识)。发生的事情是SAS假定了8个字符,并且出现了2010-08-,基本上错过了这一天。我尝试了几种使用输入来解决该方法的方法,但是到目前为止,我没有解决该输入。我要么获得一个空列,要么有一个转换号(例如52789-我想是从1960年日期用作参考的日期)我希望你们能给我一些暗示如何完成此操作。代码是:

FILENAME IPC3data zip 'C:Users********IPC3data.zip'
member='tls201_appln.csv';
DATA newdata;
  INFILE IPC3data DLM=';' DSD FIRSTOBS=2;
  INPUT appln_id $ appln_auth $ appln_nr $ appln_kind $ appln_filing_date $ appln_filing_year $ appln_nr_epodoc $ appln_nr_original $ ipr_type $ internat_appln_id $ int_phase $ reg_phase $ nat_phase $ earliest_filing_date $ earliest_filing_year $ earliest_filing_id $ earliest_publn_date $ earliest_publn_year $ earliest_pat_publn_id $ granted $ docdb_family_id $ inpadoc_family_id $ docdb_family_size $ nb_citing_docdb_fam $ nb_applicants $ nb_inventors;
 Filing_date = input(appln_filing_date, ANYDTDTE10.);
 put Filing_date=YYMMDD10.;
 Early_filing_date = input(earliest_filing_date, ANYDTDTE10.);
 put Early_filing_date=YYMMDD10.;
 Early_publn_date = input(earliest_publn_date, ANYDTDTE10.);
 put Early_publn_date=YYMMDD10.;

运行;谢谢!

定义您的变量,那么您就不会截断。

个人,我发现首先要使用长度语句阅读的顺序定义变量要容易得多。这是SAS对如何根据当前输入语句定义变量的猜测等效的等效物,但是我将所有..._的日期变量更改为10个字符字符串,而不是默认的8个字符。您可能还应更改其他一些变量的长度(甚至类型)。

LENGTH appln_id appln_auth appln_nr appln_kind $8 appln_filing_date $10
       appln_filing_year appln_nr_epodoc appln_nr_original $8
       ipr_type internat_appln_id int_phase reg_phase nat_phase $8
       earliest_filing_date $10 earliest_filing_year earliest_filing_id $8
       earliest_publn_date $10 earliest_publn_year earliest_pat_publn_id $8
       granted docdb_family_id inpadoc_family_id docdb_family_size $8
       nb_citing_docdb_fam nb_applicants $8
       nb_inventors 8
;

然后,输入语句可以非常简单,因为您可以通过在第一个和最后一个变量名称之间放置--来使用位置变量列表。

input appln_id -- nb_inventors ;

但实际上日期是SAS中的数字。您只需要使用特殊的信息和格式,以便SAS知道如何将其转换为人类可读的文本字符串。因此,通过将长度从$10更改为8,然后附加适当的信息,SAS将它们存储为日期而不是字符字符串。

,将日期变量更改为数字。
informat appln_filing_date earliest_filing_date earliest_publn_date yymmdd.;
format appln_filing_date earliest_filing_date earliest_publn_date yymmdd10.;

默认情况下,SAS字符串设置为8个字符,在您的情况下太短。

您可以使用长度和信息语句来指定长度以及要在数据中读取的方式

输入和输入后,您可以添加长度和/或信息语句。

通知者指定在读取变量时(在CSV文件中)的格式时如何格式化,而格式则控制格式在SAS中的显示方式。

您无需读取所有变量作为字符变量。您可以指定日期格式并输入

FILENAME IPC3data zip 'C:Users********IPC3data.zip' member='tls201_appln.csv';
DATA newdata;
INFILE IPC3data DLM=';' DSD FIRSTOBS=2;

INPUT appln_id $ appln_auth $ appln_nr $ appln_kind $ appln_filing_date appln_filing_year $ appln_nr_epodoc $ appln_nr_original $ ipr_type $ internat_appln_id $ int_phase $ reg_phase $ nat_phase $ earliest_filing_date earliest_filing_year $ earliest_filing_id $ earliest_publn_date earliest_publn_year $ earliest_pat_publn_id $ granted $ docdb_family_id $ inpadoc_family_id $ docdb_family_size $ nb_citing_docdb_fam $ nb_applicants $ nb_inventors;

INFORMAT appln_filing_date earliest_filing_date earliest_publn_date anydtdte.;
FORMAT appln_filing_date earliest_filing_date earliest_publn_date DATE9.;

最新更新