将缺失值重新编码为条件均值

Recoding missing values into conditional means

考虑一个包含 4 个变量的数据集 - RespondentIDSite 年份价格 .我想用 Price[= 的平均值替换 Price 中的缺失值53=] 表示确切的 YearSite

例如,如果在 2009年在巴黎平均报价格 是 22,我想替换每个缺失的 Price年份=2009 和 站点=巴黎与 22.

如果我想用零替换缺失值(例如),我会创建一个语法 RECODE Price (SYSMIS=0) (ELSE=COPY),但我不知道如何实现这个有条件的意思。

我也知道可以使用 temporary. select if Year=2009 and Site=Paris. compute NewVar=mean(Price) 找到每个条件均值。但是SiteYear[=53=的组合太多了] 在我的数据集中手动完成。 顺便说一句,实际数据集中的所有变量都是数字(我不知道重要与否)。

知道如何在 SPSS 或其他统计软件中执行此操作吗?

查看 AGGREGATE 和 MATCH 命令(或带有 SPLIT FILE 的 RMV)。 编辑: 添加示例。

DATASET NAME rawdata.
SORT CASES BY Year Site.
DATASET DECLARE agg.
AGGREGATE OUTFILE agg / BREAK Year Site / Mean_Price=MEAN(Price).
MATCH FILES FILE =rawdata / TABLE agg / BY Year Site .
IF MISSING(Price) Price=Mean_Price.

*ALTERNATIVELY.
DATASET NAME rawdata.
SORT CASES BY Year Site.
SPLIT FILE BY Year SITE.
RMV /Mean_Price=SMEAN(Price).
IF MISSING(Price) Price=Mean_Price.
SPLIT FILE OFF.
AGGREGATE /OUT=* MODE=ADD /BREAK=Site Year /Price_mean=MEAN(Price).
if missing(price) price=Price_mean.
execute.