【问题标题】:how to find the minimum of several dates in PSPP如何在 PSPP 中找到几个日期的最小值
【发布时间】:2019-04-25 11:50:06
【问题描述】:

我正在尝试从 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 位数字。 非常感谢任何帮助,谢谢!

【问题讨论】:

    标签: date min pspp


    【解决方案1】:

    好吧,我终于找到了。不是那么直截了当,但仍在工作。 问题是您必须将日期转换为整数,然后 取最小值。

    ***************************************
    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
    

    【讨论】:

      猜你喜欢
      • 2019-11-22
      • 2019-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      相关资源
      最近更新 更多