matlab - 计算表中某列的某些行的平均值

标签 matlab mean

我有一个带有表格的 .csv 文件,我按如下方式导入该文件:

mydata = readtable('datafile1.csv');

该表有 2549 行和 28 列。下面是表格的一部分,其中包含所有列,但有一些行,举个例子:

ID          subject A                   B   C                   D       E       F       G       H   I   J    K       L  M   N                   O    P      Q   R       S   T   U   V                   W   X   Y
'sbj05100'  'sbj05' 6.22316646575928    85  -2.31806182861328   339 14  100022  'tf'    48401   100 2   2   'no'    'h' 339 322.507000000000    339 'sbj05' 100 100021  286 1   419 1.95000000000000    2   1   662
'sbj05102'  'sbj05' 7.60787820816040    65  3.00547647476196    405 17  102012  'tf'    59201   102 1   2   'yes'   'h' 405 385.367000000000    405 'sbj05' 102 102011  283 1   283 1.89000000000000    1   1   364
'sbj05104'  'sbj05' -3.71897959709167   81  3.80262303352356    429 19  104012  'tf'    66401   104 1   2   'yes'   'h' 429 408.228000000000    429 'sbj05' 104 104011  266 1   266 2.19000000000000    2   1   244
'sbj09152'  'sbj09' 0.181026369333267   88  -0.0696721449494362 87  4   152042  'tf'    12401   152 4   2   'no'    'l' 87  82.8280000000000    87  'sbj09' 152 152041  297 1   297 1.25000000000000    1   1   354
'sbj09157'  'sbj09' 0.309507131576538   116 0.226024463772774   51  2   157042  'tf'    5201    157 4   2   'no'    'l' 51  48.4870000000000    51  'sbj09' 157 157041  273 1   273 1.45000000000000    1   1   279
'sbj10151'  'sbj10' 6.99367523193359    90  4.86872243881226    345 20  151022  'tf'    70001   151 2   2   'no'    'h' 345 328.224000000000    345 'sbj10' 151 151021  198 1   198 3                   1   1   310
'sbj10167'  'sbj10' 2.25431561470032    152 -0.200379326939583  129 7   167012  'tf'    23201   167 1   2   'yes'   'h' 129 122.675000000000    129 'sbj10' 167 167011  110 1   110 2.32000000000000    2   1   276
'sbj10168'  'sbj10' 3.22731518745422    147 4.72183227539062    93  3   168042  'tf'    8801    168 4   2   'no'    'l' 93  88.3230000000000    93  'sbj10' 168 168041  179 1   179 2.38000000000000    2   1   132

我需要计算每个主题(主题列)和每个条件的B列的平均值,并分别计算C列的平均值(I 列)。 我想要得到的是:

for sbj05 column B --> cond 1 = (65+81)/2
                       cond2 = 85
          column C --> cond 1 = (3.005476475+3.802623034)/2
                       cond2 = -2.3180618
and so on...

我尝试点击此链接 in matlab, calculate mean in a part of one column where another column satisfies a condition .

[R, I, J] = unique(mydata(:,2));
% count the repeating entries: now we have integer indices!
counts = accumarray(J, 1, size(R));
% sum the 2nd column for all entries
sums   = accumarray(J, mydata(:,4), size(R)); %for column B
% compute means
means  = sums./counts;

但我收到此错误:

Undefined function 'accumarray' for input arguments of type 'table'.

有什么建议吗?

最佳答案

方便的是,Matlab 有一个计算表格统计数据的函数。因此,您可能需要使用 grpstats,而不是 accumarray:

meanPerSubjectAndCondition = grpstats(mydata,{'subject','I'},'mean','DataVars',{'B','C'})

关于matlab - 计算表中某列的某些行的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34271169/

相关文章:

c - 这种技术会减少 MATLAB 实时研讨会编码器的编译时间吗?

r - 给定列名称的数据框中列的平均值

python - 如何根据另一列中对应值的相似性获得一列值的平均值

r - 通过 R 中的标准计算平均值

matlab - 来自 Dymola 仿真的 .mat 结果的数据处理

matlab - MATLAB 中的反向谱图 A La Aphex Twin

Matlab - 如何在黑色全屏上绘制像素?

Matlab:在没有循环的情况下对对象进行乘法赋值

python - 寻找平均持续时间(H :M:S) in python pandas

python - 数据框列的平均值