我正在尝试计算用于计算以下内容的spss语法:我每个日期都有收入,并且想要创建一个新变量,其中包含该收入与上一年度相同日期的百分比变化。我搜索了spss如何处理日期,但没有找到执行此操作的函数。谢谢你的帮助!!
答案 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.
扩展它需要花费更多的工作,因此它可以列出旧的变量名称和新的变量名称(例如,如果你想一次滞后多个变量)。