Clear Filters
Clear Filters

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

1 view (last 30 days)
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,:]);

Answers (2)

Star Strider
Star Strider on 14 Jul 2017
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 on 18 Jul 2017
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.

Categories

Find more on Tables in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!