как найти минимум нескольких дат в ПСПП - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь извлечь минимальную дату из нескольких столбцов даты в PSPP .Вот файл синтаксиса, который я использую:

***************************************
* [1] READ FORM CSV FILE :: input.csv *
***************************************
GET DATA
/TYPE=TXT
/FILE='input.csv'
/FIRSTCASE=2
/VARIABLES=
startDate1 ADATE8
endDate1   ADATE8
startDate2 ADATE8
endDate2   ADATE8
startDate3 ADATE8
endDate3   ADATE8
startDate4 ADATE8
endDate4   ADATE8
.

***********************************
* [2] DEFINE VARIABLE :: earliest *
***********************************
Variable earliest:
COMPUTE earliest = MIN(startDate1,startDate2,startDate3,startDate4).
EXECUTE.

**************************************
* [3] SAVE TO CSV FILE :: output.csv *
**************************************
SAVE TRANSLATE
/OUTFILE='output.csv'
/REPLACE
/TYPE=CSV

Когда я проверяю output.csv, я вижу, что новый столбец действительно создан, но вместо паттерна мм / дд / гггг это всего лишь 11 цифрномера.Любая помощь очень ценится, спасибо!

1 Ответ

0 голосов
/ 23 ноября 2018

Ну, я наконец-то нашел это.Не так просто, но все еще работает.Подвох в том, что вам нужно преобразовать дату в целое число и только тогда принять минимальное значение.

***************************************
GET DATA
/TYPE=TXT
/FILE='input.csv'
/FIRSTCASE=2
/VARIABLES=
startDate1 ADATE8
endDate1   ADATE8
startDate2 ADATE8
endDate2   ADATE8
startDate3 ADATE8
endDate3   ADATE8
startDate4 ADATE8
endDate4   ADATE8
.

*******************************************************************
Variable myDate1:
COMPUTE myDate1=XDATE.YEAR(startDate1)*1000+XDATE.JDAY(startDate1).
EXECUTE.
*******************************************************************
Variable myDate2:
COMPUTE myDate2=XDATE.YEAR(startDate2)*1000+XDATE.JDAY(startDate2).
EXECUTE.
*******************************************************************
Variable myDate3:
COMPUTE myDate3=XDATE.YEAR(startDate3)*1000+XDATE.JDAY(startDate3).
EXECUTE.
*******************************************************************
Variable myDate4:
COMPUTE myDate4=XDATE.YEAR(startDate4)*1000+XDATE.JDAY(startDate4).
EXECUTE.
*******************************************************************
Variable earliest:
COMPUTE earliest = MIN(myDate1,myDate2,myDate3,myDate4).
EXECUTE.

**************************************
SAVE TRANSLATE
/OUTFILE='output.csv'
/REPLACE
/TYPE=CSV
...