How do I take a large table, split it into smaller chunks, and add them to a new table?

1 回表示 (過去 30 日間)
ampaul
ampaul 2017 年 7 月 14 日
回答済み: Peter Perkins 2017 年 7 月 18 日
Hi, I have a 100x5 table. The 100 rows are split evenly into 4 classes (for example, 1:25 = class 1, 26:50 = class 2, and so on). I would like to take the first 10 value from each of the classes in that table to create a new, 40x5 table. Is this possible? This is the code I have now, but it is not set up correctly. Any help is appreciated.
Table40 = Table100([1:10,:],[26:35,:],[51:60,:],[76:85,:]);

回答 (2 件)

Star Strider
Star Strider 2017 年 7 月 14 日
Try this:
v1 = rand(100,1); % Create Data
v2 = rand(100,1); % Create Data
v3 = rand(100,1); % Create Data
v4 = rand(100,1); % Create Data
v5 = rand(100,1); % Create Data
Table100 = table(v1, v2, v3, v4, v5); % Create ‘Table100’
Table40 = Table100([1:25,26:35,51:60,76:85],:); % Create ‘Table40’

Peter Perkins
Peter Perkins 2017 年 7 月 18 日
Another possibility: use repelem to create a variable in the table that indicates the group number. Then call varfun, using that new variabl;e as the grouping variable, and pass varfun a function that returns the first 10 rows of whatever column vector it's given.

カテゴリ

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