访问数据用分类数组

选择数据按类别

根据数据的值选择数据通常是有用的。这种类型的数据选择可以基于一个变量中的值创建逻辑向量,然后使用该逻辑向量选择其他变量中的值子集。您可以通过查找位于一定范围内的数值数组中的值来创建用于选择数据的逻辑向量。此外,您可以通过查找特定的离散值来创建逻辑向量。当使用分类数组,你可以很容易:

  • 选择特定类别的元素。对于分类阵列,使用逻辑运算符==要么〜=来选择是,或者不在,特定类别的数据。在类别中的特定组中选择的数据,使用ismember功能。

    对于有序分类阵列,利用不平等>> =<, 要么<=找到在类别的上方或下方的特定类别的数据。

  • 删除属于特定类别的数据。使用逻辑运算符来包括或排除从特定类别的数据。

  • 查找不在一个定义的类别元素。分类数组指示哪些元素不通过属于一个定义的类别<未定义>。使用isundefined功能找到没有限定值的观察。

常见的方式访问数据用分类数组

这个例子说明了如何索引并用分类搜索阵列。可以访问使用存储在表内以类似的方式明确的数组中的数据。

装入样本数据

加载样本数据来自100名患者聚集。

加载耐心谁是
名称大小字节类属性年龄100X1 800双舒张100X1 800双性别100X1 11412细胞身高100X1 800双姓100X1 11616细胞位置100X1 14208细胞SelfAssessedHealthStatus 100X1 11540细胞吸烟者100X1 100逻辑收缩期100X1 800双重量100X1 800双

从特征向量单元阵列创建范畴阵列

性别位置包含在类属数据。每个单元阵列中包含从一个小组唯一值的(分别表示两种性别和三个位置)被字符向量。兑换性别位置要分类排列。

性别=分类(性别);位置=绝对的(位置);

一项单一类别的成员

对于分类数组,您可以使用逻辑运算符==〜=发现是,或不是,一个特定类别的数据。

确定是否有在该位置观察到的任何患者,“古城墙总医院”

任何(位置==“古城墙总医院”
ANS =合乎逻辑0

有没有在古城墙总医院观察病人。

搜索类别的组成员

您可以使用ismember找到在类别中的特定组的数据。创建用于在所观察到的患者的逻辑矢量县综合医院要么VA医院

VA_CountyGenIndex =...ismember(位置,{“县综合医院”“VA医院”});

VA_CountyGenIndex是含有逻辑100由1逻辑阵列真正1)为分类阵列中的每个元件位置这是该类别的成员县综合医院要么VA医院。输出,VA_CountyGenIndex包含76个非零元素。

使用逻辑向量,VA_CountyGenIndex选择患者在任一观察县综合医院要么VA医院

VA_CountyGenPatients =名字(VA_CountyGenIndex);

VA_CountyGenPatients是字符向量的76×1单元阵列。

在一个特定的类别绘制选择元素

使用摘要功能打印包含类别名称和每个类别中的元素数量的摘要。

摘要(位置)
县综合医院39圣玛丽医疗中心24 VA医院37

位置是具有三个类别100×1阵列分类。县综合医院发生在39个元素,圣玛丽医疗中心在24个元件,和VA医院在37层的元件。

使用摘要功能打印的汇总性别

摘要(性别)
女53男47

性别是具有两个类别100×1阵列分类。发生在53种元素和发生在47个元素。

使用逻辑运算符==只访问女性患者的年龄。然后绘制这个数据的直方图。

图()直方图(年龄(性别=='女'))标题(“女患者年龄”

直方图(年龄(性别== '女'))地块为53名女患者的年龄数据。

从一个特定的类别删除数据

您可以使用逻辑运算符将包含或排除特定类别的数据。在删除观察到的所有患者VA医院从工作空间的变量,年龄位置

年龄=年龄(位置〜=“VA医院”);位置=位置(位置〜=“VA医院”);

现在,年龄是一个63×1数字数组,并且位置是一个63×1阵列分类。

列出的类别位置,以及在每个类别中的元素数。

摘要(位置)
县综合医院39圣玛丽医疗中心24 VA医院0

在观察到患者VA医院从被删除位置VA医院仍然是一个类别。

使用removecats函数删除VA医院从类别位置

位置= removecats(位置,“VA医院”);

验证类别,VA医院, 去掉了。

类别(位置)
ANS =2×1单元{“县综合医院”} {“圣玛丽的医疗中心'}

位置是具有两个类别的63×1阵列分类。

删除元素

您可以通过删除索引的元素。例如,你可以删除的第一要素位置通过用选择的元素的其余部分位置(2:结束)。但是,要删除元素更简单的方法是使用[]

位置(1)= [];摘要(位置)
县综合医院38圣玛丽医疗中心24

位置是具有两类一个62×1阵列分类。删除第一个元素对来自同一类别的其他元素没有影响,不会删除该类别本身。

检查不定数据

删除类别县综合医院位置

位置= removecats(位置,“县综合医院”);

显示分类数组的第一个八张素,位置

位置(1:8)
ANS =8X1分类圣玛丽医疗中心<未定义>圣玛丽医疗中心圣玛丽医疗中心<未定义> <未定义>圣玛丽医疗中心圣玛丽医疗中心

除去类别后,县综合医院,元件先前属于该类别不再属于定义为任何类别位置。分类数组表示这些元素作为未定义

使用功能isundefined发现不属于任何类别的意见。

undefinedIndex = isundefined(位置);

undefinedIndex是含有逻辑一个62×1阵列分类真正1)所有未定义元素位置

集中未定义的元素

使用摘要函数来打印在未定义的元素的数量位置

摘要(位置)
圣玛丽医疗中心24 <未定义> 38

的第一要素位置所属的类别,圣玛丽医疗中心。设置的第一个元素是未定义因此,它不再属于任何类别。

位置(1)='<未定义>';摘要(位置)
圣玛丽医疗中心23 <未定义> 39

您可以选择的元素未定义而不去除类别或改变其它元素的类别。集合中的元素是未定义以表示与未知值的元素。

预分配范畴阵列与undefined元素

您可以使用undefined元素预分配一个明确的数组的大小有更好的表现。创建具有与仅已知位置元素分类数组。

definedIndex =〜isundefined(位置);newLocation =位置(definedIndex);摘要(newLocation)
圣玛丽医疗中心23

扩大规模newLocation所以它是一个200×1的分类数组。将最后一个新元素设置为未定义。所有其他新的元素也被设定为未定义。23个原创要素保持他们的价值观。

newLocation(200)='<未定义>';摘要(newLocation)
圣玛丽医疗中心23 <未定义> 177

newLocation有适合你的空间规划阵列中存储后的值。

也可以看看

||||||

相关的例子

更多关于