Spss语法用于计算去年同一日期的百分比变化

Spss语法用于计算去年同一日期的百分比变化,spss,Spss,我试图找出spss语法来计算以下内容:我有每个日期的收入,并希望创建一个新变量,其中包含该收入相对于上一年同一日期的百分比变化。我已经搜索了spss是如何处理日期的,但还没有找到一个函数来实现这一点。谢谢你的帮助 如果您知道文件中有每个日期,则可以使用SHIFT值,如果年份是闰年,则有一个条件。另一种方式,我将显示虽然不需要在文件中的每个日期。基本上,我在这里做的是创建一个新的数据文件,计算未来一年的数据,然后合并回原始文件 *Make some fake data. DATA LIST FRE

我试图找出spss语法来计算以下内容:我有每个日期的收入,并希望创建一个新变量,其中包含该收入相对于上一年同一日期的百分比变化。我已经搜索了spss是如何处理日期的,但还没有找到一个函数来实现这一点。谢谢你的帮助

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

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

扩展它只需要稍微多做一点工作,这样就可以获取旧变量名和新变量名的列表,例如,如果您想同时滞后多个变量。

您能提供一个数据结构示例吗?