SPSS:按特定序列出现过滤数据集

SPSS: Filter dataset by specific sequence occurrence

背景:我有一个大型数据集(>100000 个条目),其中包含主要 institutions/companies 的财政信息。有几列包含财政年度(第 1 列)、公司名称(第 5 列)、董事姓名(第 6 列)、年收入(第 11 列)等信息。理想情况下,每家公司都应包含其财务信息从 1996 年到 2006 年进入这个数据集。然而,许多公司缺少一年或多年的信息,因此不应进行任何进一步分析。

这是我的数据集的屏幕截图: BoardCharacteristics

如您所见,此快照中包含的许多公司并未提供 1996 至 2006 财年的完整信息。

Objective:第一步是过滤此数据集,以便只有提供了整个时间跨度(即从 1996 年到 2006 年)信息的公司才会包含在后续分析中。由于理想情况下,每家公司提供的信息至少应等于 11 行(即 1996 - 2006 年),而且许多公司每个财政年度都包含不止一位董事的姓名,因此我最初的想法是指定一个过滤器,该过滤器只会 select 特定的行序列(从 1996 年开始到 2006 年结束)并对整个数据集按顺序执行此操作,同时省略不完整的序列(例如,公司 A 的 2001 年至 2006 年缺失)或介于两者之间的任何内容。然而,由于序列长度的不一致和序列组成的可变性,simple/rigid 过滤器 select 任何从 1996 年开始到 2006 年结束的序列是不够的。

我知道有几种并发症:

我已经尝试了几个功能,包括按范围过滤功能:

RANGE(exp,low,high) --> RANGE(year,1996,2006)

不出所料,这没有用。我也尝试在 Excel 中过滤此数据集,但无济于事。

虽然我怀疑是否有一个函数可以解决这个问题,但我仍然没有找到任何有用的语法来解决这个问题。因此,我将不胜感激一些意见。如果我的问题陈述有任何不清楚的地方,请随时提问。

此处需要使用 AGGREGATE。这是一个让你摆脱困境的例子:

DATA LIST FREE / Company Year.
BEGIN DATA
1, 1995
1, 1996
1, 1997
1, 1998
1, 1999
1, 2000
1, 2001 
1, 2002
1, 2002
1, 2002
1, 2003
1, 2004 
1, 2005 
1, 2006
2, 1996
2, 1997
2, 2005 
2, 2006
END DATA.
DATASET NAME DS0.

/* Filter data to retain only years of interest*/.
SELECT IF RANGE(Year, 1996,2006).

/* Aggregate to remove multiple year entries */.
DATASET DECLARE DSBREAK01.
AGGREGATE OUTFILE=DSBREAK01 /BREAK=Company Year /Count1=N.

/* Aggregate to find first and last year present in data and a count of number of other distinct years in-between*/.
DATASET ACTIVATE DSBREAK01.
DATASET DECLARE DSBREAK02.
AGGREGATE OUTFILE=DSBREAK02 /BREAK=Company /Count2=N /FirstYear=MIN(Year) / LastYear=MAX(Year).
DATASET ACTIVATE DSBREAK02.

/* Compute flag for companies which match desired conditions*/.
COMPUTE Flag=(Count2=11 AND FirstYear=1996 AND LastYear=2006).

/* Match flag variable to original dataset for further processing*/.
DATASET ACTIVATE DS0.
MATCH FILES FILE=* /TABLE=DSBREAK02 /BY Company.
ADD FILES FILE=* /DROP=Count2 FirstYear LastYear.