如何在 PSPP 中找到几个日期中的最小值
how to find the minimum of several dates in PSPP
我正在尝试从 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
时,我发现确实创建了一个新列,
但不是 mm/dd/yyyy 模式,它只是一些 11 位数字。
非常感谢任何帮助,谢谢!
嗯,我终于找到了。不是那么直接,但仍在工作。
问题是您必须将日期转换为整数,然后才可以
取最小值。
***************************************
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
我正在尝试从 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
时,我发现确实创建了一个新列,
但不是 mm/dd/yyyy 模式,它只是一些 11 位数字。
非常感谢任何帮助,谢谢!
嗯,我终于找到了。不是那么直接,但仍在工作。 问题是您必须将日期转换为整数,然后才可以 取最小值。
***************************************
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