文档

访问数据用分类数组

按类别选择数据

选择基于其值的数据往往是有用的。这种类型的数据的选择可涉及在一个变量创建一个基于值的逻辑向量,然后使用该逻辑矢量来选择其它变量值的子集。可以创建用于通过在一定范围内的一个数值数组发现值中选择数据的逻辑矢量。此外,您可以创建查找特定的离散值逻辑载体。当使用分类阵列,您可以轻松地:

  • 从特定类别中选择元素。对于分类阵列,使用逻辑运算符= =~ =选择属于或不属于特定类别的数据。要选择特定类别中的数据,请使用ismember功能。

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

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

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

使用分类数组访问数据的常用方法

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

装入样本数据

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

加载病人谁是
名称大小字节类属性年龄100X1 800双舒张100X1 800双性别100X1 12212细胞身高100X1 800双姓100X1 12416细胞位置100X1 15008细胞SelfAssessedHealthStatus 100X1 12340细胞吸烟者100X1 100逻辑收缩期100X1 800双重量100X1 800双

从字符向量的单元格数组创建分类数组

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

性别=分类(性别);位置=分类(位置);

搜索单个类别的成员

对于分类数组,可以使用逻辑运算符= =~ =查找属于或不属于某个特定类别的数据。

确定是否有在该位置观察到的任何患者,Rampart总医院的

任何(位置==Rampart总医院的
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(位置,“县综合医院”);

显示分类数组的前8个元素,位置

位置(1:8)
ans =8 x1分类数组圣玛丽医疗中心<未定义>圣玛丽医疗中心圣玛丽医疗中心<未定义> <未定义>圣玛丽医疗中心圣玛丽医疗中心

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

使用的函数isundefined寻找不属于任何类别的观察结果。

undefinedIndex = isundefined(位置);

undefinedIndex一个62乘1的分类数组是否包含逻辑真正的1中的所有未定义元素位置

未定义的元素集

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

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

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

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

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

预先分配带有未定义元素的分类数组

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

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

扩大规模newLocation因此,它是一个200×1阵列分类。设置上一个新的元素是未定义的。所有其他新元素也被设置为未定义的。23个原创要素保持他们的价值观。

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

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

也可以看看

||||||

相关的例子

更多关于

这个话题有用吗?