本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

对表执行计算

此示例说明如何对表执行计算。

函数 rowfunvarfun 都可将指定的函数应用于表,而其他许多函数则需要使用数值或同构数组作为输入参数。您可以使用点索引提取单个变量中的数据,或使用花括号提取一个或多个变量中的数据。提取的数据会是一个数组,您可以将该数组用作为其他函数的输入。

将样本数据读入到表中

使用 readtable 函数将逗号分隔的文本文件 testScores.csv 中的数据读入到表中。testScores.csv 包含多个学生的测试分数。使用该文本文件第一列中的学生姓名作为表中的行名称。

T = readtable('testScores.csv','ReadRowNames',true)
T=10×4 table
                  Gender      Test1    Test2    Test3
                __________    _____    _____    _____

    HOWARD      {'male'  }     90       87       93  
    WARD        {'male'  }     87       85       83  
    TORRES      {'male'  }     86       85       88  
    PETERSON    {'female'}     75       80       72  
    GRAY        {'female'}     89       86       87  
    RAMIREZ     {'female'}     96       92       98  
    JAMES       {'male'  }     78       75       77  
    WATSON      {'female'}     91       94       92  
    BROOKS      {'female'}     86       83       85  
    KELLY       {'male'  }     79       76       82  

T 是一个包含 10 行和四个变量的表。

汇总表

使用 summary 函数汇总表来查看每个变量的数据类型、说明、单位和其他描述性统计量。

summary(T)
Variables:

    Gender: 10x1 cell array of character vectors

    Test1: 10x1 double

        Values:

            Min          75  
            Median     86.5  
            Max          96  

    Test2: 10x1 double

        Values:

            Min         75   
            Median      85   
            Max         94   

    Test3: 10x1 double

        Values:

            Min         72   
            Median      86   
            Max         98   

汇总包含每个测试的最低分、中值分和最高分。

计算每行的平均值

使用花括号 {} 提取第二、第三和第四个变量中的数据,计算每一行的平均值,然后将该平均值存储于一个新变量 TestAvg 中。

T.TestAvg = mean(T{:,2:end},2)
T=10×5 table
                  Gender      Test1    Test2    Test3    TestAvg
                __________    _____    _____    _____    _______

    HOWARD      {'male'  }     90       87       93          90 
    WARD        {'male'  }     87       85       83          85 
    TORRES      {'male'  }     86       85       88      86.333 
    PETERSON    {'female'}     75       80       72      75.667 
    GRAY        {'female'}     89       86       87      87.333 
    RAMIREZ     {'female'}     96       92       98      95.333 
    JAMES       {'male'  }     78       75       77      76.667 
    WATSON      {'female'}     91       94       92      92.333 
    BROOKS      {'female'}     86       83       85      84.667 
    KELLY       {'male'  }     79       76       82          79 

您也可以使用变量名称 T{:,{'Test1','Test2','Test3'}} 或变量索引 T{:,2:4} 选择数据子集。

使用分组变量计算统计量

按学生的性别计算 TestAvg 的均值和最大值。

varfun(@mean,T,'InputVariables','TestAvg',...
       'GroupingVariables','Gender')
ans=2×3 table
      Gender      GroupCount    mean_TestAvg
    __________    __________    ____________

    {'female'}        5            87.067   
    {'male'  }        5              83.4   

替换数据值

每个测试的最高分为 100。使用花括号提取表中的数据,并将测试得分转换为 25 分制得分。

T{:,2:end} = T{:,2:end}*25/100
T=10×5 table
                  Gender      Test1    Test2    Test3    TestAvg
                __________    _____    _____    _____    _______

    HOWARD      {'male'  }     22.5    21.75    23.25      22.5 
    WARD        {'male'  }    21.75    21.25    20.75     21.25 
    TORRES      {'male'  }     21.5    21.25       22    21.583 
    PETERSON    {'female'}    18.75       20       18    18.917 
    GRAY        {'female'}    22.25     21.5    21.75    21.833 
    RAMIREZ     {'female'}       24       23     24.5    23.833 
    JAMES       {'male'  }     19.5    18.75    19.25    19.167 
    WATSON      {'female'}    22.75     23.5       23    23.083 
    BROOKS      {'female'}     21.5    20.75    21.25    21.167 
    KELLY       {'male'  }    19.75       19     20.5     19.75 

更改变量名称

将变量名称从 TestAvg 更改为 Final

T.Properties.VariableNames{end} = 'Final'
T=10×5 table
                  Gender      Test1    Test2    Test3    Final 
                __________    _____    _____    _____    ______

    HOWARD      {'male'  }     22.5    21.75    23.25      22.5
    WARD        {'male'  }    21.75    21.25    20.75     21.25
    TORRES      {'male'  }     21.5    21.25       22    21.583
    PETERSON    {'female'}    18.75       20       18    18.917
    GRAY        {'female'}    22.25     21.5    21.75    21.833
    RAMIREZ     {'female'}       24       23     24.5    23.833
    JAMES       {'male'  }     19.5    18.75    19.25    19.167
    WATSON      {'female'}    22.75     23.5       23    23.083
    BROOKS      {'female'}     21.5    20.75    21.25    21.167
    KELLY       {'male'  }    19.75       19     20.5     19.75

另请参阅

| | | | |

相关主题