Main Content

对变量分组以拆分数据

您可以使用分组变量将数据变量拆分为不同的组。通常,选择分组变量是拆分-应用-合并工作流的第一步。您可以将数据拆分为不同的组,对每个组应用一个函数,然后合并结果。您还可以在分组变量中表示缺失值,以便忽略数据变量中的对应值。

分组变量

分组变量是用于进行分组或分类的变量或观测值(即其他变量中的数据值)。分组变量可以是以下任意一种数据类型:

  • 数值、逻辑值、分类、datetimeduration 向量

  • 字符向量元胞数组

  • 表,包含此列表中任何数据类型的表变量

数据变量是包含观测值的变量。分组变量必须具有与数据变量中的各个值对应的值。当分组变量中的对应值相同时,数据值属于同一个组。

下表显示了数据变量、分组变量以及您在使用分组变量拆分数据变量时可创建的组的示例。

数据变量

分组变量

数据组

[5 10 15 20 25 30]

[0 0 0 0 1 1]

[5 10 15 20] [25 30]

[10 20 30 40 50 60]

[1 3 3 1 2 1]

[10 40 60] [50] [20 30]

[64 72 67 69 64 68]

{'F','M','F','M','F','F'}

[64 67 64 68] [72 69]

当您使用字符向量元胞数组或分类数组作为分组变量时,可以为数据组赋予有意义的名称。如果要对变量进行分组,分类数组不失为一种高效且灵活的选择。

组定义

通常,组数和分组变量中的唯一值个数一样多。(分类数组还可包含数据中未表示的类别。)组和组的顺序取决于分组变量的数据类型。

  • 对于数值、逻辑值、datetimeduration 向量或字符向量元胞数组,这些组对应于按升序排序的唯一值。

  • 对于分类数组,这些组对应于相应数组中观测到的唯一值,并按 categories 函数返回的顺序进行排序。

findgroups 函数可接受多个分组变量,例如 G = findgroups(A1,A2)。您还可以在表中包含多个分组变量,例如 T = table(A1,A2); G = findgroups(T)findgroups 函数会按分组变量的相应元素中的唯一值组合定义组。findgroups 会首先按第一个分组变量的顺序决定顺序,然后按第二个分组变量的顺序,以此类推。例如,如果 A1 = {'a','a','b','b'}A2 = [0 1 0 0],则分组变量中的唯一值为 'a' 0'a' 1'b' 0(分别定义三个组)。

拆分-应用-合并工作流

选择分组变量并将数据变量拆分为多个组后,可以对这些组应用函数并合并结果。此工作流称为拆分-应用-合并工作流。您可以结合使用 findgroupssplitapply 函数来分析此工作流中的数据组。下图显示了使用分组变量 Gender 和数据变量 Height 计算不同性别人群的平均身高的简单示例。

findgroups 函数会返回根据分组变量中的唯一值定义组的组编号向量。splitapply 会在应用函数之前有效使用组编号将数据分为不同组。

缺少组值

分组变量可能会缺失值。下表显示了每种数据类型缺失的值指示符。如果分组变量有缺失值,则 findgroups 会指定 NaN 作为组成员,并且 splitapply 会忽略数据变量中的相应值。

分组变量数据类型

缺失值指示符

数值

NaN

逻辑值

(不可缺少)

分类

<undefined>

datetime

NaT

duration

NaN

字符向量元胞数组

''

字符串

<missing>

另请参阅

| | |

相关主题