问题描述

问题描述

问题描述

我正在处理一份美国冲突事件的电子表格。每一行代表一个事件,并包含地理和时间信息。冲突事件往往以“波浪”的形式发生(相对紧密的时间分组)。我为每一波都生成了一个身份变量,并想创建一个变量来衡量这些冲突事件在每一波中的地理分布。

我使用 Excel 来做这件事。数据已经按地区、日期和波次排序。

数据描述

数据集结构如下:

Country     Region     Date       Event     Wave
-------     -------    ------     -------   ------
USA         Vermont    5/1/2017   Strike    Wave 1
USA         Vermont    5/2/2017   Strike    Wave 1
USA         New Hamp.  5/3/2017   Strike    Wave 1
USA         Vermont    5/3/2017   Strike    Wave 1
USA         Maine      5/4/2017   Strike    Wave 1
USA         Washingt.  8/16/2018  Riot      Wave 2
USA         Washingt.  8/18/2018  Riot      Wave 2
USA         Oregon     8/18/2018  Protest   Wave 2
USA         Californ.  8/19/2018  Riot      Wave 2
USA         Nevada     8/20/2018  Protest   Wave 2
USA         Idaho      8/20/2018  Riot      Wave 2

我想要创造什么

我想创建一个变量(“geo_disp”)来记录区域在特定时期内经历过冲突海浪。您会注意到,当两个事件发生在同一天但发生在不同地点时,两者都会记录区域总数。以下是我希望数据的样子:

Country     Region     Date       Event     Wave    geo_disp
-------     -------    ------     -------   ------  --------
USA         Vermont    5/1/2017   Strike    Wave 1   1
USA         Vermont    5/2/2017   Strike    Wave 1   1
USA         New Hamp.  5/3/2017   Strike    Wave 1   2
USA         Vermont    5/3/2017   Strike    Wave 1   2
USA         Maine      5/4/2017   Strike    Wave 1   3
USA         Washingt.  8/16/2018  Riot      Wave 2   1
USA         Washingt.  8/18/2018  Riot      Wave 2   2
USA         Oregon     8/18/2018  Protest   Wave 2   2
USA         Californ.  8/19/2018  Riot      Wave 2   3
USA         Nevada     8/20/2018  Protest   Wave 2   5
USA         Idaho      8/20/2018  Riot      Wave 2   5

我如何创建geo_disp使用 Excel 的变量?

提前感谢您——我非常感激。

答案1

如果您使用 Excel 365 并且可以访问动态数组函数 FILTER 和 UNIQUE,则可以执行以下操作:

在此处输入图片描述

geo_disp_1:(地理显示1:

=COUNTA(UNIQUE(FILTER($B$4:$B4,$E$4:$E4=$E4)))

地理显示:

=MAXIFS($F$4:$F$14,$E$4:$E$14,$E4,$C$4:$C$14,$C4)

这是我到达那里的过程

首先,我知道我可以使用 TRANSPOSE 水平返回垂直项目的数组。这使我能够使用锚定到第一行的范围来生成以下内容:

在此处输入图片描述

我意识到当 Wave 发生变化时我想重新启动这些列表,因此我使用 FILTER 仅将与当前 wave 匹配的行传递到 TRANSPOSE 函数中。

在此处输入图片描述

这样稍微好一点,但我不想要重复的。因此,我可以使用 UNIQUE 来删除它们,请记住,我需要将第二个参数设置为 TRUE,因为这是一个水平数组。

在此处输入图片描述

现在只需计算每行中的项目数:

在此处输入图片描述

在这样直观地处理之后,我将其转换为更简单的内容。实际上,您不需要以这种方式转置数组。这就是我得到 geo_disp_1 公式的方法(如上所示)。

剩下的最后一个挑战是确保考虑到这个“同一日期的多个区域”问题。我没有立即找到一个明显的方法来做到这一点,除非有一个单独的列,该列基于波次和日期相同而取 geo_disp_1 的最大值。

相关内容