我当前正在尝试将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.;