对变量分组以拆分数据
您可以使用分组变量将数据变量拆分为不同的组。通常,选择分组变量是拆分-应用-合并工作流的第一步。您可以将数据拆分为不同的组,对每个组应用一个函数,然后合并结果。您还可以在分组变量中表示缺失值,以便忽略数据变量中的对应值。
分组变量
分组变量是用于进行分组或分类的变量或观测值(即其他变量中的数据值)。分组变量可以是以下任意一种数据类型:
数值、逻辑值、分类、
datetime
或duration
向量字符向量元胞数组
表,包含此列表中任何数据类型的表变量
数据变量是包含观测值的变量。分组变量必须具有与数据变量中的各个值对应的值。当分组变量中的对应值相同时,数据值属于同一个组。
下表显示了数据变量、分组变量以及您在使用分组变量拆分数据变量时可创建的组的示例。
数据变量 | 分组变量 | 数据组 |
---|---|---|
|
|
|
|
|
|
|
|
|
当您使用字符向量元胞数组或分类数组作为分组变量时,可以为数据组赋予有意义的名称。如果要对变量进行分组,分类数组不失为一种高效且灵活的选择。
组定义
通常,组数和分组变量中的唯一值个数一样多。(分类数组还可包含数据中未表示的类别。)组和组的顺序取决于分组变量的数据类型。
对于数值、逻辑值、
datetime
或duration
向量或字符向量元胞数组,这些组对应于按升序排序的唯一值。对于分类数组,这些组对应于相应数组中观测到的唯一值,并按
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
(分别定义三个组)。
拆分-应用-合并工作流
选择分组变量并将数据变量拆分为多个组后,可以对这些组应用函数并合并结果。此工作流称为拆分-应用-合并工作流。您可以结合使用 findgroups
和 splitapply
函数来分析此工作流中的数据组。下图显示了使用分组变量 Gender
和数据变量 Height
计算不同性别人群的平均身高的简单示例。
findgroups
函数会返回根据分组变量中的唯一值定义组的组编号向量。splitapply
会在应用函数之前有效使用组编号将数据分为不同组。
缺少组值
分组变量可能会缺失值。下表显示了每种数据类型缺失的值指示符。如果分组变量有缺失值,则 findgroups
会指定 NaN
作为组成员,并且 splitapply
会忽略数据变量中的相应值。
分组变量数据类型 | 缺失值指示符 |
---|---|
数值 |
|
逻辑值 | (不可缺少) |
分类 |
|
|
|
|
|
字符向量元胞数组 |
|
字符串 |
|
另请参阅
findgroups
| splitapply
| rowfun
| varfun