代码之家  ›  专栏  ›  技术社区  ›  Larry

SPSS-将三个日期字段的值传递到文件名中

  •  1
  • Larry  · 技术社区  · 7 年前

    我的数据集有三个日期字段(adate10):期间、版本和创建日期。在所有情况下,每个字段的值都是相同的。假设值为:

    Period = 10/01/17
    Version = 11/15/17
    Created = 11/25/17
    

    我想把这三个日期都传给 SAVE OUTFILE='C:\Users\Inventory ? ? ?... 命令,因此文件名为:

    C:\MyData\Inventory p20171001 v20171115 c20171125.sav
    

    http://spssx-discussion.1045642.n5.nabble.com/include-value-from-variable-in-filename-when-saving-td4326879.html

    2 回复  |  直到 7 年前
        1
  •  2
  •   mirirai    7 年前

    这是一条小蟒蛇:

    BEGIN PROGRAM.
    import spss, spssdata
    
    # names of date variables (case sensitive)
    varlist = ['period', 'version', 'created'] 
    
    # fetch dates from dataset and format them to YYYYMMDD
    data = spssdata.Spssdata(indexes=(varlist), cvtDates=(varlist))
    dates = [date.strftime("%Y%m%d") for date in data.fetchone()]
    data.close()
    
    # Create 'save command' command and submit it to spss
    spss.Submit(r"""
    SAVE OUTFILE = 'C:\MyData\Inventory p{0} v{1} c{2}.sav'.
    """.format(*dates))
    END PROGRAM. 
    
        2
  •  0
  •   eli-k    7 年前

    您只需使用语法即可获得所需的结果:

    TEMPORARY.
    select if $casenum=1.
    format Period Version Created (f11).
    write out="C:\MyData\save with dates in name.sps"   
        /"save out='C:\MyData\Inventory p", Period, " v",  Version, " c", Created, ".sav' ".
    exe.
    insert file="C:\MyData\save with dates in name.sps".