您已經提到過:創建一個包含所有單元名稱和連續字符串的基本文件,然後將其與數據文件進行匹配將是一個簡單的方法。我想在這裏爲其他讀者概述這一個。
所以對於問題例如您將創建基本數據集是這樣的:
INPUT PROGRAM.
LOOP #i = 1 to 3. /* 3 = maximum value of unit.
LOOP # = 1 to 3. /* 3 = maximum value of serial.
COMPUTE unit = #i.
COMPUTE serial = #j.
END CASE.
END LOOP.
END LOOP.
END FILE.
END INPUT PROGRAM.
DATASET NAME base.
EXECUTE.
的數據集將是這樣的。
unit serial
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
以下匹配文件命令將帶來想要的結果。
MATCH FILES
/FILE base
/FILE data1
/BY unit serial.
如果你想要的代碼是關於「單位」的最大值和「串行」,你可以使用Python擴展的更靈活:
BEGIN PROGRAM.
import spss, spssdata
# list of variable names
variables = ["unit", "serial"]
#fetch variable data
data = spssdata.Spssdata(variables).fetchall()
# get maximum of 'unit' and 'serial'
maxunit = max([int(i[0]) for i in data])
maxserial = max([int(i[1]) for i in data])
# create base data set
spss.Submit('''
INPUT PROGRAM.
LOOP #i = 1 to {maxu}.
LOOP #j = 1 to {maxs}.
COMPUTE unit = #i.
COMPUTE serial = #j.
END CASE.
END LOOP.
END LOOP.
END FILE.
END INPUT PROGRAM.
DATASET NAME base.
EXECUTE.
'''.format(maxu=maxunit, maxs=maxserial))
END PROGRAM.
沒錯這些都是方法我也會這樣做。 'LOOP'和'XSAVE'是另一種選擇,雖然不會更有效率。你可能會使用'AGGREGATE'和'VARSTOCASES'來擴展數據,但其中的任何一個都需要5到6行代碼,至少我可以想象。 –