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

7 次查看(过去 30 天)
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 个评论
Erin Winkler
Erin Winkler 2018-9-17
Just kidding, answered my own question. It was categorical strings, not strings so I fixed it using char. Thanks!
Guillaume
Guillaume 2018-9-17
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.

请先登录,再进行评论。

回答(1 个)

Guillaume
Guillaume 2018-9-17
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.

类别

Help CenterFile Exchange 中查找有关 Data Preprocessing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by