Как преобразовать формат даты из импортированного CSV для объединения данных

#sas #date-formatting #datastep

#sas #форматирование даты #datastep

Вопрос:

Я работаю над назначением, и мне не разрешено использовать PROC SQL. Я одновременно импортировал данные из двух файлов csv и переименовал столбцы (см. Код ниже), но когда я попытался добавить две таблицы, возникла проблема с форматом даты. Когда я ОБРАБАТЫВАЮ СОДЕРЖИМОЕ, я получаю следующую информацию:

Work.2019data: Переменная:Тип даты: Число Длина: 8 Формат / Информация: MMDDYY10 Когда я открываю этот файл в блокноте, даты выглядят следующим образом: 31.12.2019

Для второй таблицы:

Work.2020data: Переменная: Тип даты: Длина числа:8 Формат / Информация: YYMMDD10 Но когда я открываю этот файл в блокноте, даты выглядят так: 2020-11-16

 PROC IMPORT
    DATAFILE= "amp;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= "amp;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, чтобы я мог объединить две таблицы после? Я видел так много способов сделать это и попробовал их, но безуспешно.

Комментарии:

1. Почему вы используете PROC IMPORT для чтения текстового файла? Просто напишите свой собственный шаг данных, чтобы прочитать файл (ы). Затем вы можете контролировать, какие форматы привязаны к переменным, и какие имена используются для переменных. Шаг данных, вероятно, в конечном итоге будет содержать меньше кода, чем шаги импорта proc.

2. Мой профессор специально попросил, чтобы мы использовали PROC IMPORT для импорта 3 файлов CSV — у меня не было выбора.

Ответ №1:

Если вы объединяете два набора данных, которые имеют одну и ту же переменную, то формат по умолчанию, прикрепленный к переменной, будет первым не пропущенным форматом, который видит компилятор шага данных. Итак, для вашего примера, если вы запустите

 data want;
   set '2019data'n '2020data'n ;
run;
 

затем MMDDYY10. будет использоваться формат. Но если вы измените порядок ссылок на входные наборы данных

 data want;
   set '2020data'n '2019data'n ;
run;
 

затем YYMMDD10. будет использоваться формат.

Но если вы добавите инструкцию FORMAT к шагу data, вы сможете контролировать, какой формат будет прикреплен к новому набору данных. Поэтому, если вы использовали:

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

Теперь стиль по умолчанию, который будет использоваться для отображения значений нужной ДАТЫ, будет ddmonyyyyy.

Ответ №2:

Если вы просто хотите объединить оба файла, вы можете перейти к шагу с данными. Он выполнит задачу, присвоив второму набору данных те же форматы, что и первому:

 data data_2019_2020;
set 2019data 2020data;
run;
 

Если вы хотите изменить формат даты, вы также можете сделать это с помощью datastep. Например:

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

Или, если вы предпочитаете, вы можете сначала изменить только один набор данных, а затем использовать PROC APPEND для стекирования.

Комментарии:

1. Привет, Луис! Спасибо, что нашли время ответить. Оба метода работают на основе выходных данных, но не сохраняют файлы с накоплением в новый набор данных. Моя ошибка, я забыл добавить это в свой первоначальный вопрос.

2. @Earl, методы сохраняют файл с накоплением в новом наборе данных. Я назвал набор данных как data_2019_2020 . Но вы можете изменить его на имя, которое вы предпочитаете. Загляните в свой рабочий каталог, там будут файлы, начинающиеся с data_ , файл. Если вам нужна другая библиотека, вам просто нужно указать ее: (например: mydata.data_2019_2020 сохранить ее в ранее определенной библиотеке с именем mydata )

3. Я понял примерно через 10 минут после публикации… большое вам спасибо!!