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

4 次查看(过去 30 天)
MA
MA2021-10-18
评论: MA ,2021-10-31
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,

采纳的回答

the cyclist
the cyclist 2021-10-18
% 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

更多回答(0 个)

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by