I have a column in my table containing numerical data, where I want to make them into 4 specific groups in a new column in the same table. I do not know how to write the code, but have attempted the following failed codes. Please correct me.
num_rows = size(Table1.Time,1) %count the number of rows in Table 1
for i=1:1:num_rows
if T1.Time < 5
T1.TimeNew = 5; % Group 1, return in a new column in Table 1
elseif T1.Time >= 5 & T1.Time <15
T1.TimeNew = 15; % Group 2
elseif T1.Time >= 15 & T1.Time <25
T1.TimeNew = 25; % Group 3
else T1.TimeNew = 30; % Group 4 (for any data >=25)
end
end

 Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 18 de Jul. de 2017
Editada: Andrei Bobrov el 18 de Jul. de 2017

0 votos

ii = discretize(T.Time,[-inf,5,15,25,inf])
V = [5,15,25,30]';
T.TimeNew = V(ii);

5 comentarios

wesleynotwise
wesleynotwise el 18 de Jul. de 2017
Editada: wesleynotwise el 18 de Jul. de 2017
Oh yes. This is what I am looking for. THANK YOU!!!
May I know what is wrong with the'for and if statements'? Or they are not supposed to be used in this way?
Andrei Bobrov
Andrei Bobrov el 18 de Jul. de 2017
Editada: Andrei Bobrov el 18 de Jul. de 2017
with block if..elseif..else..end
for ii=1:size(T1.Time,1)%count the number of rows in T1
if T1.Time(ii) < 5
T1.TimeNew(ii) = 5; % Group 1, return in a new column in Table 1
elseif T1.Time(ii) >= 5 && T1.Time(ii) <15
T1.TimeNew(ii) = 15; % Group 2
elseif T1.Time(ii) >= 15 && T1.Time(ii) <25
T1.TimeNew(ii) = 25; % Group 3
else
T1.TimeNew(ii) = 30; % Group 4 (for any data >=25)
end
end
other "exotic" variant:
t = [T1.Time < 5,T1.Time >= 5 & T1.Time <15,T1.Time >= 15 & T1.Time <25];
T1.TimeNew = [t,~any(t,2)]*[5;15;25;30];
wesleynotwise
wesleynotwise el 18 de Jul. de 2017
Alright, I saw my mistakes! Thanks once again :)
Jessica Blasco
Jessica Blasco el 14 de Mayo de 2018
thanks!! He also helped me with a similar problem!! :)
Padmamalini  T H
Padmamalini T H el 31 de En. de 2020
thank you sir. it helped my problem too

Iniciar sesión para comentar.

Más respuestas (1)

lyda
lyda el 19 de Mayo de 2019

0 votos

I have one table with many raws and columns.
I want to create a new table.
if a cell=111 return to me this raw
I don't know how to write this.
code=0;
for i=2:1143; %column 2 to raw 1143
if everything(i)==111; %"everything" is a table with all features
.......
end
end
thank you!

Categorías

Preguntada:

el 18 de Jul. de 2017

Comentada:

el 31 de En. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by