How can I count it by months?
3 views (last 30 days)
Show older comments
Hi all! I haven't been using Matlab for awhile and I'm struggling a bit now. The following is a dataset of events, and I was wondering if you guys could lend me a hand on constructing a loop code on counting the number of events per month. For example, it would be 2 for Dec05, 1 for Jan06 and 1 for Feb06... and so on. Thanks in advance!
ID TIME DATA YEAR MONTH
1803 38699.29973 1.9 2005 12
1804 38704.26328 2.2 2005 12
1805 38729.27574 1.4 2006 1
1806 38772.3945 1.6 2006 2
1807 38789.94187 2.2 2006 3
The following is a portion of the code that I have:
i = 1;
j = 1;
while data(i,5) == data(i+1,5)
i = i + 1;
if data(i,5) ~= data(i+1,5)
month_record(j,1) = month(data(i,2));
month_record(j,2) = i;
i = i + 1;
continue
end
if data(i+1,5) == NaN
break
end
end
0 Comments
Answers (1)
dpb
on 11 Sep 2015
Edited: dpb
on 12 Sep 2015
This will be much easier if you convert the month, day columns into date numbers. I don't have the newer table by which you could then use the new datetime and splitapply, but the idea can be easily illustrated for just plain arrays...
>> y=[2005 2005 2006 2006 2006];
>> m=[12 12 1:3];
>> dn=datenum(y,m,1).'; % convert to date numbers
>> u=unique(dn); % the unique dates in the total list
>> n=hist(dn,u) % bin over those values
n =
2 1 1 1
>> ds=dataset(u,datestr(u,'mmm yyyy'),n.','VarNames',{'DateNum';'Date';'Events'})
ds =
DateNum Date Events
7.3265e+05 Dec 2005 2
7.3268e+05 Jan 2006 1
7.3271e+05 Feb 2006 1
7.3274e+05 Mar 2006 1
>>
Last simply uses the Statistics Toolbox dataset to display the disparate values similar to what the new table class can do...
0 Comments
See Also
Categories
Find more on Dates and Time in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!