Warm tip: This article is reproduced from serverfault.com, please click

sas-如何从导入的CSV转换日期格式以能够合并数据

(sas - How to convert date format from imported CSV to be able to merge data)

发布于 2020-11-29 21:55:43

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

Work.2019数据: 变量:日期类型:编号长度:8格式/信息:MMDDYY10当我在记事本中打开此文件时,日期看起来像这样:12/31/2019

对于第二个表:

Work.2020数据: 变量:日期类型:编号长度:8格式/信息:YYMMDD10但是当我在记事本中打开此文件时,日期看起来像这样:2020-11-16

PROC IMPORT
    DATAFILE= "&export_mtl/2019data.csv"
    OUT= WORK.2019data
    (RENAME=(new_cases=nouveaux_cas
             new_deaths=nouveaux_deces
             new_tests=nouveaux_tests
             total_tests=nb_total_tests
             female_smokers=femmes_fumeuses
             male_smokers=hommes_fumeurs
            ))
    DBMS= csv
    REPLACE;guessingrows=10000;
    GETNAMES= YES;
RUN;

PROC IMPORT
    DATAFILE= "&export_mtl/2020data.csv"
    OUT= WORK.2020data
(RENAME=(new_cases=nouveaux_cas
             new_deaths=nouveaux_deces
             new_tests=nouveaux_tests
             total_tests=nb_total_tests
             female_smokers=femmes_fumeuses
             male_smokers=hommes_fumeurs
            ))
    DBMS= csv
    REPLACE;guessingrows=10000;
    GETNAMES= YES;
RUN;

将日期转换为2020data表格中的最简单方法是什么,以便我可以将其后的两个表格连接起来?我已经看到了很多这样做的方法,并且没有运气尝试过它们。

Questioner
Earl
Viewed
12
Tom 2020-11-30 22:39:24

如果合并两个具有相同变量的数据集,则该变量所附的默认格式将是数据步骤编译器看到的第一个不丢失的格式。因此,对于你的示例,如果你运行

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中DATE值的默认样式为ddMONyyyy。