主要内容

splitapply

数据分割成组织和应用功能

描述

例子

Y = splitapply (函数,X,G)分裂X指定的组G和应用功能函数每组。splitapply返回Y为一个数组,其中包含连接输出函数组织分裂出来的X。输入参数G是一个向量的正整数指定相应的组的元素X属于。如果G包含值,splitapply省略了相应的值X当它分裂X进组。创建G,你可以使用findgroups函数。

splitapply结合两个步骤Split-Apply-Combine工作流

例子

Y = splitapply (函数XN, X1,…G)分裂X1,…, XN进组和应用函数。的splitapply函数调用函数每组后,与相应的元素X1,…, XN随着N输入参数函数

例子

Y = splitapply (函数,T,G)将变量的表T进组和应用函数。的splitapply将变量的函数T向量、矩阵、或细胞阵列,根据表的数据类型变量。如果TN变量,然后函数必须接受N输入参数。

例子

(日元…,YM] = splitapply(___)将变量分为团体和适用函数每组。函数返回多个输出参数。日元…,包含连接输出函数的组拆分输入数据变量。函数可以返回输出参数,属于不同的类,但是每个输出的类必须每次都一样吗函数被称为。您可以使用该语法与任何输入参数的前面的语法。

输出参数的数量函数不需要指定的输入参数的数量一样X1,…, XN

例子

全部折叠

计算的平均高度为组患者性别和显示结果。

从数据文件加载病人高度和性别patients.mat

负载病人性别高度
类属性名称大小字节性别100 x1 11412细胞高度100 x1 800双

指定组的性别findgroups

G = findgroups(性别);

分裂高度指定的组G。计算平均身高,性别。输出的第一行参数是指身高的女性患者,第二行是平均身高的男性患者。

splitapply (@mean、身高、G)
ans =2×165.1509 - 69.2340

计算的差异的方差为组患者血压读数,并显示结果。血压读数中包含两个数据变量。计算的差异,使用一个函数,它有两个输入参数。

负载血压读数和吸烟对100名患者的数据从数据文件中patients.mat

负载病人收缩压舒张压吸烟者
类属性名称大小字节舒张压100 x1 800双吸烟者100 x1 100逻辑收缩压100 x1 800双

定义函数作为一个函数,计算之间的差异的方差对吸烟者和非吸烟者收缩期和舒张期血压读数。函数需要两个输入参数。

func = @ (x, y) var (x - y);

使用findgroupssplitapply病人数据分割成组织和计算的方差差异。findgroups还返回组标识符吸烟者。的splitapply函数调用函数一旦每组收缩压舒张压两个输入参数。

(G,吸烟者)= findgroups(吸烟);varBP = splitapply (func,收缩压,舒张压,G)
varBP =2×144.4459 - 48.6783

创建一个表,其中包含的方差差异,每一组的病人数量。

numPatients = splitapply (@numel,吸烟者,G);T =表(吸烟者,numPatients varBP)
T =2×3表吸烟者numPatients varBP _________ ___________ ______假66 48.678 44.446真正34

计算最小值,中位数,和最大重量组患者并返回这些结果为每一组数组。splitapply连接输出参数,以便您能够区分输出为每个组从输出另一组。

定义一个函数,它返回最小值,中位数,和最大行向量。

mystats = @ (x) [min (x)中位数(x)马克斯(x));

负载病人体重、性别和地位吸烟者patients.mat

负载病人重量性别吸烟者
类属性名称大小字节性别100 x1 11412细胞吸烟者100 x1 100逻辑体重100 x1 800双

使用findgroupssplitapply把病人体重分成组和计算统计每组。

G = findgroups(性别、吸烟);Y = splitapply (mystats、重量、G)
Y =4×3111.0000 131.0000 147.0000 115.0000 131.0000 146.0000 158.0000 181.5000 194.0000 164.0000 181.0000 202.0000

在本例中,您可以返回nonscalar输出为行向量,因为数据和分组变量是列向量。每一行的Y包含一个不同的组患者的数据。

计算的平均身体质量指数(BMI)患者数据的表。组患者的性别和身份吸烟者和非吸烟者。

患者数据和分组变量加载到表中。

负载病人DT =表(身高、体重);GT =表(性别、吸烟);

定义一个函数来计算重量和高度的平均BMI组或病人。

meanBMIFcn = @ (h, w)的意思是((w。/ (h ^ 2)) * 703);

创建一个表,其中包含对每一组的平均BMI。

[G,结果]= findgroups (GT);meanBMI = splitapply (meanBMIFcn, DT, G);结果。meanBMI = meanBMI
结果=4×3表性别吸烟者meanBMI __________ ______ _________{‘女性’}假21.672{‘女性’}真21.669{‘男性’}假26.578{‘男性’}真26.458

计算最小值,意思是,病人和最大高度组织和表中返回结果。

定义一个函数在文件命名multiStats.m接受一个输入向量和返回最低,意思是,和最大值的向量。

% 2015年版权MathWorks公司。函数(瞧,avg,嗨)= multiStats罗(x) = min (x);avg =意味着(x);你好= max (x);结束

病人数据加载到一个表。

负载病人T =表(性别、身高);总结(T)
变量:性别:100 x1单元阵列特征向量的高度:100 x1双重价值:分钟60 67 Max中值72

组患者高度的性别。创建一个表,其中包含的输出multiStats为每个组。

(G,性别)= findgroups (T.Gender);[minHeight、meanHeight maxHeight] = splitapply (@multiStats, T.Height, G);结果=表(性别、minHeight meanHeight maxHeight)
结果= 2 x4表性别minHeight meanHeight maxHeight __________ _____ _____ _____{‘女性’}60 70{‘男性’}66 69.234 72 65.151

输入参数

全部折叠

功能适用于组织的数据,指定为一个函数处理。

如果函数返回一个nonscalar输出参数,然后必须面向,这样的论证splitapply从连续的调用可以连接输出参数函数。例如,如果输入数据变量是列向量,函数必须返回一个标量或行向量作为输出参数。

例子:X, Y = splitapply (@sum G)返回的数据的组织X

数据变量指定为一个向量,矩阵,或细胞数组。的元素X属于集团指定的相应的元素G

如果X是一个矩阵,splitapply将每一列或行作为一个单独的数据变量。的方向G决定splitapply对的列或行X作为数据变量。

组数据,指定为一个向量的正整数。

  • 如果X是一个向量或单元阵列,然后呢G必须是相同的长度吗X

  • 如果X是一个矩阵,那么的长度G必须等于行或者列的数量X,这取决于的方向G

  • 如果输入参数表T,然后G必须是一个列向量。的长度G的行数必须等于T

数据变量指定为一个表。splitapply对每个表变量作为一个单独的数据变量。

更多关于

全部折叠

Split-Apply-Combine工作流

Split-Apply-Combine工作流是常见的数据分析。在这个工作流,分析师将数据分成组,每组一个函数适用于,并结合结果。图中显示了一个典型的例子工作流和工作流实现的部分findgroupssplitapply

扩展功能

版本历史

介绍了R2015b