How to split tables and extract all data based on a column value?

19 views (last 30 days)
Hi all. I'm new to MATLAB and coding in general. I'm practicing on this data set (r_T.mat).
I want to create separate tables based on values on column 'G'. These tables need to include all data (from column 'custNo' up to column 'p').
So the output should be 3 separate tables with all data still intact.
I can't seem to separate them will all data still intact. When I apply
r_T.G(r_T.G == 1)
it just outputs
ans =
1
1
1
1
1
and it does NOT extract ALL data from column 'custNo' up to column 'p' in a separate table.
To provide more context, my end goal is to run a while loop to get the sum of column 'd' up until <= a variable 'C' for each group in column 'G'.
Any help or tips is greatly appreciated. Thank you.

Accepted Answer

Cris LaPierre
Cris LaPierre on 18 Nov 2020
See this page on how to access data in a table.
You are close. Don't forget to include both row and column indices, and make the outer variable the data you want to extract. In this case, that is probably the table name only.
load r_T.mat
r_T(r_T.G == 1,:)
ans = 5x8 table
custNo x_coor y_coor d nearest_dist m G p ______ ______ ______ __ ____________ _ _ ______ 1 13 6 15 11.18 2 1 1.3416 2 18 16 30 0 2 1 100 3 13 6 15 11.18 2 1 1.3416 6 16 9 13 7.2801 2 1 1.7857 7 14 17 20 4.1231 2 1 4.8507
Of course, if it's just the sum you ultimately want, try using groupsummary.
sumTbl = groupsummary(r_T,'G','sum','d')
sumTbl = 3x3 table
G GroupCount sum_d _ __________ _____ 1 5 93 2 1 30 3 4 68

More Answers (0)

Categories

Find more on Cell Arrays in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!