matlab查看table存在,MATLAB的Table表

【例3-61】  表中添加和删除变量。

首先载入病人的测试数据,然后创建两个表。其中一个表T,包含了问诊的信息,另一个表T1,包含了体检数据。

>> load patients

>> T = table(Age,Gender,Smoker);

>> T1 = table(Height,Weight,Systolic,Diastolic);

>> T(1:5,:)%  查看前五行数据

ans =

Age     Gender     Smoker

___    ________    ______

38     'Male'      true

43     'Male'      false

38     'Female'    false

40     'Female'    false

49     'Female'    false

>> T1(1:5,:)%  查看前五行数据

ans =

Height    Weight    Systolic    Diastolic

______    ______    ________    _________

71        176       124         93

69        163       109         77

64        131       125         83

67        133       117         75

64        119       122         80

表T有100行和3个变量,表T1有100行4个变量。横向合并两个表即可将变量添加到新表中。

>> T = [T T1];

>> T(1:5,:)%  查看前五行数据

ans =

Age     Gender     Smoker    Height    Weight    Systolic    Diastolic

___    ________    ______    ______    ______    ________    _________

38     'Male'      true      71        176       124         93

43     'Male'      false     69        163       109         77

38     'Female'    false     64        131       125         83

40     'Female'    false     67        133       117         75

49     'Female'    false     64        119       122         80

现在表T具有7个变量了。

如果参与合并的两个表都有行名,那么横向合并表的时候相同行名的数据会合并到一起,这要求两个表必须有相同的行名,但行名的顺序可以不同。

用户可以通过列编号来删除变量,例如:

>> T(:,[3,6]) = [];%  删除第3个和第6个变量

查看删除之后表的前五行:

>> T(1:5,:)

ans =

Age     Gender     Height    Weight    Systolic

___    ________    ______    ______    ________

38     'Male'      71        176       124

43     'Male'      69        163       109

38     'Female'    64        131       125

40     'Female'    67        133       117

49     'Female'    64        119       122

这时表T有5个变量100行。

【例3-62】表的相关计算。

首先创建一个testScores.csv测试文件,其中包括以下内容,数据间采用逗号为分隔符。

LastName,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

然后调用readtable函数由文件testScores.csv创建表,并使用第一列作为行名。

>> T = readtable('testScores.csv','ReadRowNames',true)

T =

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行4个变量的表。

调用summary函数来对表的数据类型、描述、单位和统计信息有一个汇总:

>> summary(T)

Variables:

Gender: 10x1 cell string

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

从结果可以看到汇总信息中包含了每次考试的最低分、最高分和平均分。

假如需要计算每个人在各次考试中的平均分,那么需要对每行第2、3、4个变量进行求平均,并将结果赋值给新变量TestAvg:

>> T.TestAvg = mean(T{:,2:end},2)

T =

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'}}。

如果要将所有数据分为男生和女生两组,然后分别计算两组的平均分,那么可以采用以下方法:

>> varfun(@mean,T,'InputVariables','TestAvg',...

'GroupingVariables','Gender')

ans =

Gender     GroupCount    mean_TestAvg

--------    ----------    ------------

female    'female'    5             87.067

male      'male'      5               83.4

当前满分是按照100分来设置的,如果需要将满分设置为25分,各人成绩按比例缩小,可以采用以下方法:

>> T{:,2:end} = T{:,2:end}*25/100

T =

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 =

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值