Calculate average of specific values in one table column

70 ビュー (過去 30 日間)
Jenniluyn Nguyen
Jenniluyn Nguyen 2019 年 6 月 19 日
コメント済み: Jenniluyn Nguyen 2019 年 6 月 20 日
Say I have this table, in which the last column is a calculation from the previous three.
I want to find the average of the last column in the table, but only within certain groups. So I want to find the average value of the first four values, then the next four, then the next four, etc. What would be the most sophisticated way to do this? And is there also a way to put those values into one neat place?
I really appreciate the help, I am new to MatLab and it is still a bit confusing for me. Thank you!
8 1e-05 0.0001 8e+09
9 1e-05 0.0001 9e+09
1 1e-05 0.0001 1e+09
10 1e-05 0.0001 1e+10
6 1e-05 0.0001 6e+09
1 1e-05 0.0001 1e+09
3 1e-05 0.0001 3e+09
6 1e-05 0.0001 6e+09
10 1e-05 0.0001 1e+10
10 1e-05 0.0001 1e+10
1 1e-05 0.0001 1e+09
10 1e-05 0.0001 1e+10
10 1e-05 0.0001 1e+10
5 1e-05 0.0001 5e+09
8 1e-05 0.0001 8e+09
1 1e-05 0.0001 1e+09

採用された回答

Image Analyst
Image Analyst 2019 年 6 月 20 日
Try extracting the last column, then reshaping so that there are only 4 rows, then using mean().
% Extract last column of table, t
lastColumn = t{:, end}; % Get last column of table as column vector of doubles
% Reshape it to have 4 rows
t4 = reshape(lastColumn, 4, []);
% Get the mean of each column. This is the final answer
means4 = mean(t4, 1); % Get means of each column of 4 rows.
If you don't actually have a table and instead have just an ordinary double matrix, then you can get the last column like this:
lastColumn = yourMatrix(:, end); % For matrices, NOT tables.
If you don't know the difference between tables and matrices, look at the help for table.

その他の回答 (1 件)

infinity
infinity 2019 年 6 月 19 日
Hello,
Here is one solution that you can use
a = ...
[8 1e-05 0.0001 8e+09
9 1e-05 0.0001 9e+09
1 1e-05 0.0001 1e+09
10 1e-05 0.0001 1e+10
6 1e-05 0.0001 6e+09
1 1e-05 0.0001 1e+09
3 1e-05 0.0001 3e+09
6 1e-05 0.0001 6e+09
10 1e-05 0.0001 1e+10
10 1e-05 0.0001 1e+10
1 1e-05 0.0001 1e+09
10 1e-05 0.0001 1e+10
10 1e-05 0.0001 1e+10
5 1e-05 0.0001 5e+09
8 1e-05 0.0001 8e+09
1 1e-05 0.0001 1e+09];
b = zeros(4,1);
for i = 1:4
b(i) = mean(a((i-1)*4+1:i*4,4));
end
for your data, I save it to a variable "a". Then, you can create a variable "b" that will be used to save the average that you want to compute. Next, an easy way that you can implement the "for" loop to compute the average with specific group that you want.
Best regards,
Trung

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by