I want to create a new column with words that are atributed regarding the numerical values of another column. How can I proceed?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Eduardo Rocha
am 24 Okt. 2016
Kommentiert: Walter Roberson
am 24 Okt. 2016
I have a column with "consumption" and values range between 3000 and 8000.
From 3000 to 4000, I want "low" in the new column; From 4000 to 7000, I want "medium"; From 7000 to 8000, I want "high".
How can I create this new column?
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 24 Okt. 2016
It is not possible to put a string into a numeric matrix. You will need to use a table() or a cell array.
NewColumn = repmat( {''}, length(consumption), 1);
mask = consumption >= 3000 & consumption <= 4000;
NewColumn(mask) = cellfun(@(S) [S, 'low'], NewColumn(mask), 'Uniform', 0);
mask = consumption >= 4000 & consumption <= 7000;
NewColumn(mask) = cellfun(@(S) [S, 'medium'], NewColumn(mask), 'Uniform', 0);
mask = consumption >= 7000 & consumption <= 8000;
NewColumn(mask) = cellfun(@(S) [S, 'high'], NewColumn(mask), 'Uniform', 0);
The code would be considerably simpler if your ranges did not overlap -- you have defined 4000 as belonging to both low and medium, and you have defined 7000 as belonging to both medium and high.
2 Kommentare
Walter Roberson
am 24 Okt. 2016
I will have to guess about which way you want the overlap to be resolved.
NewColumn = cell( length(consumption), 1 );
NewColumn(consumption < 3000) = {'Forest Fire'};
NewColumn(consumption >= 3000 & consumption < 4000) = {'low'};
NewColumn(consumption >= 4000 & consumption < 7000) = {'medium'};
NewColumn(consumption >= 7000 & consumption < 8000) = {'high'};
NewColumn(consumption >= 8000) = {'Forest Fire'};
Only you can prevent Forest Fires.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Characters and Strings 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!