Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas 如何从导入的CSV转换日期格式以合并数据_Sas_Date Formatting_Datastep - Fatal编程技术网

Sas 如何从导入的CSV转换日期格式以合并数据

Sas 如何从导入的CSV转换日期格式以合并数据,sas,date-formatting,datastep,Sas,Date Formatting,Datastep,我正在做作业&不允许使用PROC-SQL。我同时从两个csv文件导入了数据并重命名了列(请参见下面的代码),但是当我尝试对这两个表进行PROC追加时,日期格式出现了问题。当我处理内容时,我会得到以下信息: 工作。2019年数据: 变量:日期 类型:Num 长度:8 格式/信息:MMDDYY10 当我在记事本中打开此文件时,日期如下所示:2019年12月31日 关于第二个表: 工作。2020数据: 变量:日期 类型:Num 长度:8 格式/信息:YYMMDD10 但当我在记事本中打开这个文件时,日

我正在做作业&不允许使用PROC-SQL。我同时从两个csv文件导入了数据并重命名了列(请参见下面的代码),但是当我尝试对这两个表进行PROC追加时,日期格式出现了问题。当我处理内容时,我会得到以下信息:

工作。2019年数据: 变量:日期 类型:Num 长度:8 格式/信息:MMDDYY10 当我在记事本中打开此文件时,日期如下所示:2019年12月31日

关于第二个表:

工作。2020数据: 变量:日期 类型:Num 长度:8 格式/信息:YYMMDD10 但当我在记事本中打开这个文件时,日期如下所示:2020-11-16



在2020data表中转换日期的最简单方法是什么,这样我就可以在2020data表之后连接这两个表?我已经看到了很多这样做的方法&尝试了它们却没有成功。

如果您只想堆叠这两个文件,可以使用数据步骤。它将执行此任务,将与第一个数据集相同的格式分配给第二个数据集:

data data_2019_2020;
set 2019data 2020data;
run;
如果要更改日期的格式,还可以使用datastep进行更改。例如:

data data_2019_2020;
set 2019data 2020data;
FORMAT date YYMMDD10.;
run;

或者,如果愿意,您可以先在一个数据集中更改,然后使用
PROC APPEND
进行堆栈。

如果您组合了两个具有相同变量的数据集,则附加到变量的默认格式将是数据步编译器看到的第一个非缺失格式。因此,作为您的示例,如果您运行

data want;
   set '2019data'n '2020data'n ;
run;
然后是MMDDYY10。格式将被使用。但是如果您颠倒了输入数据集被引用的顺序

data want;
   set '2020data'n '2019data'n ;
run;
然后是YYMMDD10。格式将被使用

但是,如果向数据步骤添加FORMAT语句,则可以控制将附加到新数据集中的格式。因此,如果您使用:

data want;
   set '2020data'n '2019data'n ;
   format date date9.;
run;

现在,用于显示WANT中日期值的默认样式将是ddMONyyyy。

Hi Luiz!感谢您抽出时间回答。这两种方法都基于输出数据工作,但不会将堆叠的文件保存到新的数据集中。是我的错,我忘了在我的第一个问题中添加它。@Earl,这些方法确实将堆叠的文件保存在一个新的数据集中。我将数据集命名为
data\u 2019\u 2020
。但是你可以把它改成你喜欢的名字。查看您的工作目录,对于以
数据\uu
开头的文件,该文件将在那里。如果你想要一个不同的库,你只需要指定它:(例如:
mydata.data\u 2019\u 2020
将它保存在以前定义的库中,名为
mydata
),我在发布后大约10分钟意识到。。。非常感谢你!!为什么要使用PROC导入来读取文本文件?只需编写自己的数据步骤即可读取文件。然后,您可以控制附加到变量的格式以及变量使用的名称。数据步骤的代码可能会比proc导入步骤少。我的教授特别要求我们使用proc导入来导入3个CSV文件-我别无选择。
data want;
   set '2020data'n '2019data'n ;
run;
data want;
   set '2020data'n '2019data'n ;
   format date date9.;
run;