How to bin a variable and create new variables for each bin
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Name = [Alice Bob Cate Doug Ernest Fan]
Age = [23 15 24 32 44 22]
T = table(Name,Age)
I want to create bins for the variable Age: for eg: 0-10, 11-20, 21-30 and 31-40
Then I want to sort the whole table based on the bins.
Thus, I want to get 4 different tables based on the Age bins
0 comentarios
Respuestas (2)
Mathieu NOE
el 9 de Nov. de 2020
hello
below an example for the first bin, easy to duplicate for the other ones
Name = [{'Alice'} {'Bob'} {'Cate'} {'Doug'} {'Ernest'} {'Fan'}];
Age = [23 5 24 32 44 22];
% I want to create bins for the variable Age: for eg: 0-10, 11-20, 21-30 and 31-40
% Then I want to sort the whole table based on the bins.
% Thus, I want to get 4 different tables based on the Age bins
% bin1
age_range1 = [0 10];
ind = find(Age>=age_range1(1) & Age<age_range1(2))
T = table(Name(ind),Age(ind))
0 comentarios
Eric Sofen
el 12 de Nov. de 2020
Editada: Eric Sofen
el 12 de Nov. de 2020
I'd encourage you to consider whether you really need separate tables for each age bin or whether you can simply add a grouping variable (using discretize) to the table and then select subsets by group when you need to do further calculations. That will all you to be able to iterate over the groups in the table rather than needing to manage a bunch of workspace variables for the different bins.
1 comentario
Steven Lord
el 12 de Nov. de 2020
One way of how to create the grouping variable is to use discretize:
Name = ["Alice"; "Bob"; "Cate"; "Doug"; "Ernest"; "Fan"];
Age = [23; 15; 24; 32; 44; 22];
T = table(Name,Age)
AgeRange = discretize(T.Age, [0 11:10:51], 'categorical');
T.Class = AgeRange
Or if you want an identifier:
gr = discretize(T.Age, [0 11:10:51]);
T.AgeCategory = gr
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!