MATLAB Answers


This question is closed. Reopen it to edit or answer.

Creating a Loop to Incorporate all Tables into One Code

1 view (last 30 days)
CMatlabWold on 22 Jun 2020
Closed: MATLAB Answer Bot on 20 Aug 2021 at 18:44
Hi, I am trying to create loops.
I have a code, where I am summing weekly complaints:
tt0 = readtable('BackUpbySS1.xlsx');
tt1.ComplaintLocation = categorical(tt1.ComplaintLocation);
tt1.Dummy = ones(height(tt1),1);
tt2 = unstack(tt1,'Dummy','ComplaintLocation');
tt2 = fillmissing(tt2,'Constant',0);
caldiff(tt1.Date([1 end]),'days')
t = datetime(2010,1,1):caldays(1):datetime(2010,12,31);
tt3 = retime(tt2,t,'FillWithConstant','Constant',0);
tt3.DoY = day(tt3.Date,'dayofyear');
tt4 = timetable2table(tt3,'ConvertRowTimes',false);
tt4 = varfun(@sum,tt4,'GroupingVariable','DoY');
tt3.MoY = month(tt3.Date);
tt3.DoM = day(tt3.Date);
tt3.WoY = week(tt3.Date);
tt4 = timetable2table(tt3,'ConvertRowTimes',false);
tt4 = varfun(@sum,tt4,'GroupingVariables',{'WoY' 'MoY' 'DoM'});
leapDayRows = (tt4.MoY==2) & (tt4.DoM==29);
tt4(leapDayRows,:) = [];
tt5 = varfun(@sum,tt4,'GroupingVariable','WoY')
tt6 = readtable('BackUpbySS1.xlsx');
tt7.ComplaintLocation = categorical(tt7.ComplaintLocation);
tt7.Dummy = ones(height(tt7),1);
tt8 = unstack(tt7,'Dummy','ComplaintLocation');
tt8 = fillmissing(tt8,'Constant',0);
caldiff(tt7.Date([1 end]),'days')
t0 = datetime(2011,1,1):caldays(1):datetime(2011,12,31);
tt9 = retime(tt8,t0,'FillWithConstant','Constant',0);
tt9.DoY = day(tt9.Date,'dayofyear');
tt10 = timetable2table(tt9,'ConvertRowTimes',false);
tt10 = varfun(@sum,tt10,'GroupingVariable','DoY');
tt9.MoY = month(tt9.Date);
tt9.DoM = day(tt9.Date);
tt9.WoY = week(tt9.Date);
tt10 = timetable2table(tt9,'ConvertRowTimes',false);
tt10 = varfun(@sum,tt10,'GroupingVariables',{'WoY' 'MoY' 'DoM'});
leapDayRows = (tt10.MoY==2) & (tt10.DoM==29);
tt10(leapDayRows,:) = [];
tt11 = varfun(@sum,tt10,'GroupingVariable','WoY')
tt12 = readtable('BackUpbySS1.xlsx');
tt13.ComplaintLocation = categorical(tt13.ComplaintLocation);
tt13.Dummy = ones(height(tt13),1);
tt14 = unstack(tt13,'Dummy','ComplaintLocation');
tt14 = fillmissing(tt14,'Constant',0);
caldiff(tt13.Date([1 end]),'days')
t1 = datetime(2012,1,1):caldays(1):datetime(2012,12,31);
tt15 = retime(tt14,t1,'FillWithConstant','Constant',0);
tt15.DoY = day(tt15.Date,'dayofyear');
tt16 = timetable2table(tt15,'ConvertRowTimes',false);
tt16 = varfun(@sum,tt16,'GroupingVariable','DoY');
tt15.MoY = month(tt15.Date);
tt15.DoM = day(tt15.Date);
tt15.WoY = week(tt15.Date);
tt16 = timetable2table(tt15,'ConvertRowTimes',false);
tt16 = varfun(@sum,tt16,'GroupingVariables',{'WoY' 'MoY' 'DoM'});
leapDayRows = (tt16.MoY==2) & (tt16.DoM==29);
tt16(leapDayRows,:) = [];
tt17 = varfun(@sum,tt16,'GroupingVariable','WoY')
Time tables tt5, tt11, and tt17 are weekly sums for 2010, 2011, and 2012, respectively. On the columns, it lists each locations, which are named S1, S2, S3, ..., S14
I want to create a table, where these sums are all in one table, where it reads from week 1 to 159, chronologically, from the first week of 2010 to the last week of 2012.
Before, I have been doing it manually.
After I compile the weeks where they are sequential over the course of the years, I then do the same thing for a different variable. The code I showed is for Back Ups. I'll run the code with a similar spreadsheet for Catch, Manhole, and Street.
Then, I input them on the same spreadsheet for each location.
Finally, I end up with a spreadsheet, "S1forPoissonW.xlsx". For each location, I'll have the other spreadsheets, "S2forPoissonW.xlsx", "S3 for PoissonW.xlsx"... etc.
Ulitmately, I'll input the spreadsheet into this code for a linear regression model:
tt1 = readtable('S1forPoissonW.xlsx');
dsa = tt1;
modelspec = 'Street ~ Catch*Back*Break*Manhole*PRCP - Catch:Back:Break:Manhole:PRCP';
mdl = fitglm(dsa,modelspec,'Distribution','poisson')
For each spreadsheet, I'll run the code and get the results.
However, I am wondering if there is one way to loop all this together into one code.
Or, if I still need two codes, if someone can just help condense any part of this, it would be greatly appreciated.

Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by