用于计算%变量的Spss语法从去年的同一日期开始

时间:2014-07-30 10:10:31

标签: spss

我正在尝试计算用于计算以下内容的spss语法:我每个日期都有收入,并且想要创建一个新变量,其中包含该收入与上一年度相同日期的百分比变化。我搜索了spss如何处理日期,但没有找到执行此操作的函数。谢谢你的帮助!!

1 个答案:

答案 0 :(得分:0)

如果你知道你在文件中有每个日期,你可以使用SHIFT VALUES然后如果年份是闰年就有条件。我将展示的另一种方式并不需要文件中的每个日期。基本上我在这里做的是制作一个新的数据文件,计算未来一年,然后合并回原始文件。

*Make some fake data.
DATA LIST FREE / Date (ADATE8) Val (F1.0).
BEGIN DATA
5/11/13 1
5/12/13 2
5/11/14 3
5/12/14 4
END DATA.
DATASET NAME Orig.

*Copy the dataset and add a year.
DATASET COPY Lag.
DATASET ACTIVATE Lag.
*Add 1 year to the date.
COMPUTE Date = DATESUM(Date,1,"YEAR").
*Remerge back into original data file.
DATASET ACTIVATE Orig.
MATCH FILES FILE = *
  /TABLE = 'Lag'
  /RENAME (Val = YearLagVal)
  /BY Date.
DATASET CLOSE Lag.

这可以做成一个非常简单的宏,以避免重复键入它。

*Macro to do this.
DEFINE !YearLag (Data = !TOKENS(1)
                /Date = !TOKENS(1)
                /Var = !TOKENS(1) 
                /NewVar = !TOKENS(1) )
DATASET COPY XLagX.
DATASET ACTIVATE XLagX.
MATCH FILES FILE = * /KEEP !Date !Var.
COMPUTE !Date = DATESUM(!Date,1,"YEAR").
DATASET ACTIVATE !Data.
MATCH FILES FILE = *
  /TABLE = 'XLagX'
  /RENAME (!Var = !NewVar)
  /BY !Date.
DATASET CLOSE XLagX.
!ENDDEFINE.

现在函数调用只是:

!YearLag Data = Orig Date = Date Var = Val NewVar = ValLagYear2.

扩展它需要花费更多的工作,因此它可以列出旧的变量名称和新的变量名称(例如,如果你想一次滞后多个变量)。