How can I store a table inside a matrix?
1 回表示 (過去 30 日間)
古いコメントを表示
I have a large table which I want to break down into smaller tables based on the time period each entry has. I'm using this code to do that:
i = 1;
while i < height(data)
%crete an empty table with correct headers
subset = data;
subset(:,:) = [];
%populate subset based on time
t1 = data.time(i);
tempcount = 1;
while hours(data.time(i)) < hours(t1)+1 && i < height(data)
subset(tempcount,:) = data(i,:);
i = i + 1;
tempcount = tempcount + 1;
end
end
However this will of course only output the final hour block. What I want to do is store each subset table after its created in a 1xN matrix so that I can reference these individually later on, but I'm unsure how to go about this.
0 件のコメント
採用された回答
Rani V.S
2016 年 10 月 26 日
Matrix cannot hold tables. Better solution is to create a cell array and store tables in each cells
0 件のコメント
その他の回答 (1 件)
Peter Perkins
2016 年 10 月 26 日
As Nidhikutty says, if you want to split data into hourly (?) tables and keep all of those in one container, you'll need to store them in a cell array.
One other point: you can almost certainly replace your inner loop with something faster along the lines of
i2 = find(data.time < data.time(i1)+hours(1), 1, 'last')
subset = data(i1:i2,:);
There are also ways to avoid even the outer loop. One of them might be
>> t = table(randn(5,1),randn(5,1),hours(2*rand(5,1)))
t =
Var1 Var2 Var3
________ ________ __________
2.908 -0.27247 0.52761 hr
0.82522 1.0984 0.29108 hr
1.379 -0.27787 0.27214 hr
-1.0582 0.70154 1.7386 hr
-0.46862 -2.0518 1.1594 hr
>> t.Var4 = floor(t.Var3,'hour')
t =
Var1 Var2 Var3 Var4
________ ________ __________ ____
2.908 -0.27247 0.52761 hr 0 hr
0.82522 1.0984 0.29108 hr 0 hr
1.379 -0.27787 0.27214 hr 0 hr
-1.0582 0.70154 1.7386 hr 1 hr
-0.46862 -2.0518 1.1594 hr 1 hr
>> rowfun(@(x,y,z) table(x,y,z), t, 'GroupingVariables','Var4', 'OutputFormat','cell')
ans =
[3×3 table]
[2×3 table]
Hope this helps.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Numeric Types についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!