Is there any more efficient way to split a table than this

1 vue (au cours des 30 derniers jours)
MA
MA le 18 Oct 2021
Commenté : MA le 31 Oct 2021
I am trying to split the table datatable into 3 smaller tables t1, t2 and t3, based on the value of the variable 'solar' in 'datatable'. accoding to three ranges:
(60-120) , (121-170) , (171<).
I did the following and its working fine but the issue is its slow and inifecient so How can I modify it to make it faster?
for ii=1:size(datatable)
if(datatable.solarT(ii)>=60 && datatable.solarT(ii)<=120)
t1(ii,:)=datatable(ii,:);
t11 = rmmissing(t1);
elseif(datatable.solarT(ii)>=121 && datatable.solarT(ii)<=170)
t2(ii,:)=datatable(ii,:);
t22 = rmmissing(t2);
else
t3(ii,:)=datatable(ii,:);
t33 = rmmissing(t3);
end
end
thank you in advance,

Réponse acceptée

the cyclist
the cyclist le 18 Oct 2021
% Set random seed for reproducibility
rng default
% Make up a table with pretend data
N = 30;
x = rand(N,1);
solar = 200*rand(N,1);
dataTable = table(x,solar);
% Define t1 based on restricted range of table value
t1 = dataTable((dataTable.solar>=60)&(dataTable.solar<=120),:)
t1 = 8×2 table
x solar _______ ______ 0.54688 63.42 0.15761 87.749 0.97059 76.312 0.14189 97.953 0.42176 89.117 0.75774 99.673 0.39223 68.077 0.65548 117.05

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by