Filter löschen
Filter löschen

How to separate a table into sub-tables by unique categories?

11 Ansichten (letzte 30 Tage)
Erin Winkler
Erin Winkler am 17 Sep. 2018
Kommentiert: Guillaume am 17 Sep. 2018
Hi all,
I have a table with the following categories:
(1) Date (as Datetime)
(2) Location (as string)
(3) Value (as integer)
I want to separate the table into multiple tables based on location. So if I have location = 'Utah', 'California', 'Washington', then I want three tables where the only location is the one it was filtered by.
So, basically, I want tables containing all of the information for the individual locations.
Let's say I have a table T with 10 rows and 3 locations where location 1 has 2 rows, location 2 has 4 rows, and location 3 has 4 rows. How would I write code to get 3 tables (2x3, 4x3, 4x3)?
Thank you!
  9 Kommentare
Erin Winkler
Erin Winkler am 17 Sep. 2018
Just kidding, answered my own question. It was categorical strings, not strings so I fixed it using char. Thanks!
Guillaume
Guillaume am 17 Sep. 2018
I fixed it using char
Which is the wrong way to fix it (slow). Comparison with categorical is done with ==, not strcmp.
T.Location == 'Utah'
However, the whole approach is wrong. As I've demonstrated in my answer, Matlab has much better tools to perform calculation per location, for all locations in one go. Details of what exactly you want to do would allow me to refine my answer.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Guillaume
Guillaume am 17 Sep. 2018
As said, it is much easier to calculate statistics by location if you don't split the table. You don't need to filter the table according to a given city either. For example, to calculate the mean of value for each location, this is trivially done:
%demo table according to your description
T = table(repelem({'Utah'; 'California'; 'Washington'}, [2 4 4]), randi(20, 10, 1), 'VariableNames', {'Location', 'Value'})
LocationMean = varfun(@mean, T, 'InputVariables', 'Value', 'GroupingVariables', 'Location')
Try doing that in one line, if you've split the table in multiple tables.

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by