主要内容

表都有数字和非数字数据时计算

这个例子展示了如何在表中的数据执行计算时均数值和非数值数据。识别表变量包含数值数据之后,您可以访问这些变量中的数据通过使用花括号或点符号。然后你可以对数值型数据执行算术运算或调用函数和分配结果回桌上,一行代码。你也可以使用rowfun函数计算表的行和varfun函数计算的变量。如果您的表有组数据,您可以使用groupsummary,rowfun,varfun函数来执行计算每组的表。

样本数据读入表

从CSV(逗号分隔值)读取数据文件,testScores.csv成一个表使用readtable函数。样例文件包含10个学生的考试分数上两个不同的学校。输出表包含变量数值数据和其他文本数据的变量。其中一个变量,学校,有一组固定的值或类别。这些类别表示两组学生在这个表。转换学校到一个分类变量。

成绩= readtable (“testScores.csv”,“TextType”,“字符串”);分数。学校= categorical(scores.School)
成绩=10×5表LastName学校Test1 Test2 Test3 __________ __________ _____ _____ _____“宋”某某学校90 87 93”柯林斯“XYZ 87 85 83”托雷斯“某某学校86 85 88“飞利浦”美国广播公司ABC学院89 86 75 80 72“凌”87“Ramirez”ABC学院96 92 98“李”某某学校78 75 77“沃克”美国广播公司ABC学院86 83 91 94 92“加西亚”85“常”某某学校79 76 82

用数值数据创建子表

数值型数据的一个简单的工作方式是创建一个小工作台,只有数值变量。您可以创建一个小工作台通过索引到表中使用括号并指定行和变量。子表是一个新的,较小的表只包含指定的行和变量从旧表。

例如,创建的子表分数只有考试成绩。因为前两个变量有非数字数据,您可以索引到这个表指定其他变量。

numericScores =分数(:,3:结束)
numericScores =10×3表Test1 Test2 Test3 _____ _____ _____ 90 87 93 87 85 83 86 85 88 75 80 72 89 86 87 96 92 98 78 75 77 91 94 92 86 83 85 79 76 82

另一种方法是使用指定变量vartype函数来指定它们的数据类型。这个函数是非常有用的,当你有一个大桌子和许多具有不同数据类型的变量。它返回一个下标变量,您可以使用它来指定表。

numericVars = vartype (“数字”)
numericVars =表vartype下标:选择表变量匹配类型的数字”看到表中访问数据。
numericScores =分数(:,numericVars)
numericScores =10×3表Test1 Test2 Test3 _____ _____ _____ 90 87 93 87 85 83 86 85 88 75 80 72 89 86 87 96 92 98 78 75 77 91 94 92 86 83 85 79 76 82

子表只有数字数据时计算

(因为R2023a)你可以直接在一个表上执行操作,只要所有的变量的数据类型支持的操作。金宝app有关更多信息,请参见直接计算表和时间表

例如,规模数值数据25点规模的考试成绩。

numericScores = numericScores。* 0.25
numericScores =10×3表Test1 Test2 Test3 _____ _____ _____ 22 22.5 21.75 23.25 21.75 21.25 20.75 21.5 21.25 18.75 20日18 22.25 21.5 21.75 24 23日23 24.5 19.5 18.75 19.25 22.75 23.5 21.5 20.75 21.25 19.75 20.5 19

R2023a之前,您不能使用该语法。相反,该表的索引使用花括号,或者使用变量功能可见性来指定所有表行和变量。这些语法返回相同的结果与前面的操作和工作在所有版本。

numericScores {:,:} = numericScores {:,:}。* 0.25 numericScores。变量= numericScores。变量。* 0.25

当你使用这些语法,他们提取表的内容和连接成一个数组,执行计算,并分配结果回桌上。唯一的要求是,必须都有数据类型的变量,允许连接。

  • 使用花括号,您还可以指定行和变量的子集,如numericScores {1:5, (“Test1”、“Test3”)}

  • 变量,你总是得到所有行和所有变量连接到一个数组中。

(因为R2023a)你也可以叫许多数学和统计功能直接在桌子上。例如,减去最小值在每个表变量的变量。

numericScores = numericScores - min (numericScores)
numericScores =10×3表Test1 Test2 Test3 _____ _____ _____ 3 5.25 2.5 2.75 2.75 3.75 1.25 2.5 - 4 0 0 0 3.5 2.75 3.75 5.25 4.25 6.5 0.75 4.75 1.25 - 4 5 1 0.25 2.5 3.25 2.75 - 2

R2023a之前你不能使用这种语法。相反,使用以下语法。他们返回相同的结果和工作在所有版本。

numericScores {:,:} = numericScores {:,:} - min (numericScores {:,:}) numericScores。变量= numericScores。变量- min(numericScores.Variables)

指望一个变量在任何表

在所有版本,您还可以执行计算在一个变量通过使用点符号和变量名。例如,添加一个修正价值5点最后的分数Test3

因为其他表变量是影响个体的操作变量,您可以执行这种类型的计算表。不管其他变量的数值或非数字数据。

numericScores。Test3= numericScores.Test3 + 5
numericScores =10×3表Test1 Test2 Test3 _____ _____ _____ 3 10.25 2.5 7.75 2.75 3.75 2.5 1.25 9 0 5 0 3.5 2.75 8.75 5.25 4.25 11.5 0.75 4.75 6.25 - 4 10 1 0.25 7.5 8.25 2.75 - 2

计算在全表行

完整的表,分数数值和非数值变量。在所有版本,使用大括号索引或点符号执行计算表内指定行和变量。

例如,发现平均、最小和最大值为每个学生的考试成绩。计算这些值在每一行。将它们分配给分数随着新的表变量。

一个简单的、有用的方法是将数据提取到一个矩阵,调用一个函数,然后分配一个新表变量的输出。例如,计算平均成绩在每一行。然后将它们添加到分数在一个新表变量中,TestMean。使用花括号来提取的数字数据Test1,Test2,Test3成一个矩阵。行计算均值,指定尺寸2当你打电话的意思是

var = [“Test1”,“Test2”,“Test3”];分数。TestMean =意味着(分数{:var}, 2)
成绩=10×6表LastName学校Test1 Test2 Test3 TestMean __________ __________ _____ _____ _____ ________“宋”某某学校90 87 93 90”柯林斯“XYZ 87 85 83 85”托雷斯“某某学校86 85 88 86.333“飞利浦”ABC学院75 80 72 75.667“凌”ABC学院89 86 87 87.333“Ramirez”ABC学院96 92 98 95.333“李”某某学校78 75 77 76.667“沃克”ABC学院91 94 92 92.333“加西亚”ABC学院86 83 85 84.667“常”某某学院79 76 82 79

各地执行计算的另一种方法是使用行rowfun函数。您不需要使用时从表中提取数据rowfun。相反,通过表和一个函数应用到数据作为输入参数rowfun。虽然语法稍微复杂,rowfun时可以有用的功能应用接受多个输入参数或返回多个输出参数。

例如,使用界限函数来找到最小和最大的考试分数。的界限函数返回两个输出参数,所以应用它分数通过使用rowfun。的输出rowfun是一个新表TestMinTestMax变量。在这种情况下,还指定“SeparateInputs”作为在每一行,这样值组合成一个向量被传递给之前界限

minmaxTest = rowfun (@bounds,分数,“数据源”var,“OutputVariableNames”,(“TestMin”,“TestMax”),“SeparateInputs”假)
minmaxTest =10×2表TestMin TestMax ____ ____ 87 93 83 87 85 88 72 80 86 89 92 98 75 78 91 94 83 86 76 82

连接分数minmaxTest这些值是在一个表中。

得分=(分数minmaxTest)
成绩=10×8表LastName学校Test1 Test2 Test3 TestMean TestMin TestMax __________ __________ _____ _____ _____ ________ ____ ____“宋”某某学校90 87 93 90 87 93”柯林斯“某某学校87 85 83 85 83 87”托雷斯“某某学校86.333 86 85 88 85 88”菲利普斯“ABC学院75 80 72 75.667 72 80“凌”ABC学院89 86 87 87.333 86 89“Ramirez”ABC学院96 92 98 95.333 92 98“李”某某学校76.667 78 75 77 75 78”沃克“ABC学院91 94 92 92.333 91 94“加西亚”ABC学院86 83 85 84.667 83 86“常”某某学院79 76 82 79 76 82

在全表计算沿指定的变量

发现平均得分为每个测试。计算这些值在表变量。

最简单的方法是使用的意思是。第一次使用花括号中提取数字数据Test1,Test2,Test3成一个矩阵。然后调用的意思是计算矩阵的每一列的意思。输出是一个数字向量,其中每个元素是一个表的意思是变量。

var = [“Test1”,“Test2”,“Test3”];meanOfEachTest =意味着(分数{:var})
meanOfEachTest =1×385.7000 84.3000 85.7000

另一种方式来执行计算表变量是使用varfun函数。您不需要使用时从表中提取数据varfun。相反,通过表和一个函数应用到数据作为输入参数varfun

计算平均分数使用varfun。输出是一个新表,表变量的有意义的名称。

meanOfEachTest = varfun (@mean,分数,“数据源”一样,var)
meanOfEachTest =1×3表mean_Test1 mean_Test2 mean_Test3 __________ __________ 85.7 84.3 85.7才开会

计算使用全表中的数据组

如果你拥有一个或多个表分组变量,然后你可以在组内的数据执行计算表。您可以使用一个分组变量中的值指定行属于的组。

例如,学校变量分数有两个值,美国广播公司(ABC)学校某某学校。你可以把这两个值是表示一组数据的类别分数。在这种情况下,您可以通过学校执行计算。

应用一个函数并使用分组变量,您可以使用varfun函数。您可以指定一个函数,如的意思是,然后用varfun它应用于每个表你指定的变量。还当你指定分组变量,varfun该函数适用于每组内每个表变量。

计算平均得分为每个测试的学校。

var = [“Test1”,“Test2”,“Test3”];meanScoresBySchool = varfun (@mean,分数,“数据源”var,“GroupingVariables”,“学校”)
meanScoresBySchool =2×5表学校GroupCount mean_Test1 mean_Test2 mean_Test3 __________ __________ __________ __________ __________ ABC学校5 XYZ学校5 84 87.4 87 86.8 81.6 84.6

从R2018a开始,你也可以使用groupsummary函数来执行计算组的每个表中的数据变量。

meanScoresBySchool = groupsummary(分数,“学校”,“的意思是”一样,var)
meanScoresBySchool =2×5表学校GroupCount mean_Test1 mean_Test2 mean_Test3 __________ __________ __________ __________ __________ ABC学校5 XYZ学校5 84 87.4 87 86.8 81.6 84.6

的语法groupsummary有点简单。同时,您可以使用groupsummary指定多个方法。例如,找到每个测试的最小和最大成绩的学校。

minmaxBySchool = groupsummary(分数,“学校”,(“最小值”,“马克斯”】,var)
minmaxBySchool =2×8表学校GroupCount min_Test1 max_Test1 min_Test2 max_Test2 min_Test3 max_Test3 __________ __________替替替ABC学校XYZ 5 75 96 80 94 72 98 78 90 75 87 77 93

使用所有预定义的方法groupsummary,指定“所有”的方法。计算所有统计学校的意思是测试成绩。

allStatsBySchool = groupsummary(分数,“学校”,“所有”,“TestMean”)
allStatsBySchool =表2×14学校GroupCount mean_TestMean sum_TestMean min_TestMean max_TestMean range_TestMean median_TestMean mode_TestMean var_TestMean std_TestMean nummissing_TestMean nnz_TestMean numunique_TestMean __________ __________ _________________售予_________________ _______ _______ _______ * * * _______ _______ ___________________ _______ _____________ ABC学校5 87.067 435.33 75.667 95.333 19.667 87.333 75.667 57.967 7.6136 0 5 5 XYZ学校5 83.4 417 76.667 90 13.333 85 76.667 29.856 5.464 0 5 5

有时你可能想找一个特定值在一个表变量,然后找到另一个表中的对应值的变量。在这种情况下使用rowfun

例如,发现每个学校的学生曾指测验分数最高。附加的支持功能,金宝appfindNameAtMax得分最高,收益和学生的名字,得分。使用rowfun应用findNameAtMax每个小组的学生。的rowfun函数是合适的,因为findNameAtMax有多个输入参数(姓氏和考试分数)并返回多个输出参数。

maxScoresBySchool = rowfun (@findNameAtMax,分数,“数据源”,(“姓”,“TestMean”),“GroupingVariables”,“学校”,“OutputVariableNames”,(“max_TestMean”,“姓”])
maxScoresBySchool =2×4表学校GroupCount max_TestMean LastName __________ __________ _______ _____ ABC学校5 95.333“Ramirez”某某学校5 90“宋”

金宝app支持函数

函数[maxValue, lastName = findNameAtMax(名称、值)%返回最大值和姓%从最大值发生的行[maxValue, maxIndex] = max(值);lastName =名字(maxIndex);结束

另请参阅

|||||

相关的话题