How can i compute the mean of specific number of table rows?

1 回表示 (過去 30 日間)
Ioannis Tsikriteas
Ioannis Tsikriteas 2017 年 8 月 9 日
コメント済み: Cong Ba 2017 年 8 月 10 日
Hi, I have a large amount of table data which is divided by date and time....to be more specific i have data that is per 10 minutes and i want to compute the mean of them per hour! In other words, i want ot compute the mean of my data per 10 rows until my data is finished! Is this possible and if yes....which command should i use?

採用された回答

Cong Ba
Cong Ba 2017 年 8 月 9 日
Try reshape:
a = randn(100,1); % assume this is the column you have
b = reshape(a,[10,10]); % reshape it so each column has 10 rows
avg = mean(b);
  4 件のコメント
Ioannis Tsikriteas
Ioannis Tsikriteas 2017 年 8 月 10 日
編集済み: Ioannis Tsikriteas 2017 年 8 月 10 日
When i try the reshape command i get the following message: Error using tabular/reshape (line 150) Undefined function 'reshape' for input arguments of type 'table'.
To be more clear isend a pic of the shape of my data tables
Cong Ba
Cong Ba 2017 年 8 月 10 日
Andrei is using the timetable function which may better suit your need (you essentially have a time series). But if you want to manipulate data in matrix form (my code works for matrix form), you can try this function: table2array

サインインしてコメントする。

その他の回答 (2 件)

Andrei Bobrov
Andrei Bobrov 2017 年 8 月 9 日
n = 278984;
t = minutes(10*(1:n)');
D = randi(255,n,2); % Let D - your data (278984 x 2)
TT = timetable(t,D(:,1),D(:,2));
TT_out = retime(TT,'hourly','mean');
  2 件のコメント
Ioannis Tsikriteas
Ioannis Tsikriteas 2017 年 8 月 10 日
I am sorry but i didn't understand the concept of these commands.
Mine data are already ona a table 278984x2 and has the following shape:
I am searching a way to compute the mean between the fifth and the eleventh row for example in order to have my data per hour, not per 10 minutes
Andrei Bobrov
Andrei Bobrov 2017 年 8 月 10 日
編集済み: Andrei Bobrov 2017 年 8 月 10 日
a.x_10_double = [a.x_10_{:}]';
TT = table2timetable(a(:,[1,3]),'RowTimes','x08_Jul_100_10_00');
TT_out = retime(TT,'hourly','mean');
or
a2 = table(a{:,1},[a{:,2}{:}]','v',{'datetime','x_10_double'})
a2.groups = hour(a2{:,1});
a_out = varfun(@mean,a2,'Group','groups');

サインインしてコメントする。


Peter Perkins
Peter Perkins 2017 年 8 月 10 日
Add a grouping variable to your table and use varfun. Something like
n = ceil(height(t)/10);
g = repelem(1:n,10)';
t.Group = g(1:height(t));
t.groupMeans = varfun(@mean,t,'GroupingVariable','Group')

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by