gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:36:24 28 4
gpt4 key购买 nike

背景:我有一个包含主要机构/公司的财务信息的大型数据集(>100000 个条目)。有几列包含诸如财政年度(第 1 栏)、公司名称(第 5 栏)、董事姓名(第 6 栏)、年收入(第 11 栏)等信息。理想情况下,每家公司都应该包括其财务信息从 1996 年到 2006 年进入这个数据集。但是,许多公司在一年或几年内都缺少信息,因此应将其排除在任何进一步的分析之外。

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

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

目标:第一步是以这样一种方式过滤这个数据集,只有提供了整个时间跨度(即从 1996 年到 2006 年)的信息的公司才会被包括在后续分析中。由于提供的信息在理想情况下应至少等于每家公司 11 行(即 1996 - 2006 年),而且许多公司每个会计年度包含多个董事姓名,我最初的想法是指定一个过滤器,仅选择特定序列行(从 1996 年开始,到 2006 年结束),并按顺序对整个数据集执行此操作,同时忽略不完整的序列(例如,A 公司 2001 年至 2006 年缺失)或介于两者之间的任何序列。然而,由于序列长度的不一致和序列组成的可变性,一个简单/刚性的过滤器将选择从 1996 年开始到 2006 年结束的任何序列是不够的。

我知道有几个并发症:

  • 并非每个完整的序列都恰好包含 11 行,因为许多公司在每个会计年度包括不止一位董事的姓名(例如,2001 会计年度的 3 位董事姓名 --> 该公司总共 13 行)
  • 公司之间潜在的序列重叠[例如A公司提供1996年至1999年;公司 B(紧随公司 A)2000 到 2006] --> 这将导致从 1996 到 2006 的序列包括公司 A 和 B(这是不可取的)

  • 我已经尝试了几个功能,包括按范围过滤功能:
    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.

    关于excel - SPSS:按特定序列出现过滤数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42093893/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com