How to get number of occurrence in a list with gaps?

2 views (last 30 days)
Good morning;
I have a list of dates like below:
1/1/2019
1/1/2019
2/1/2019
4/1/2019
4/1/2019
7/1/2019
7/1/2019
7/1/2019
I would like to generate a list with dates and number of occurrence. the output must be :
1/1/2019 2
2/1/2019 1
3/1/2019 0
4/1/2019 2
5/1/2019 0
6/1/2019 0
7/1/2019 3
I've been using "awk" to do that, but it doesn't give a good results with the "gaps" in the dates list
is there a way to do that with matlab?, I'm not very good at it.
  2 Comments
madhan ravi
madhan ravi on 22 Sep 2019
Edited: madhan ravi on 22 Sep 2019
Upload your data file. Which version of MATLAB are you using?

Sign in to comment.

Accepted Answer

Bruno Luong
Bruno Luong on 22 Sep 2019
Edited: Bruno Luong on 22 Sep 2019
(EDIT for R2016a, not supported for strings.)
% dummy test data
d={'1/1/2019'
'1/1/2019'
'2/1/2019'
'4/1/2019'
'4/1/2019'
'7/1/2019'
'7/1/2019'
'7/1/2019'}
dn=datenum(d,'dd/mm/yyyy');
count=accumarray(dn-min(dn)+1,1);
date=datestr(min(dn)+(0:size(count,1)-1)','dd/mm/yyyy');
T=table(date,count)
returns result in table
T =
7×2 table
date count
__________ _____
01/01/2019 2
02/01/2019 1
03/01/2019 0
04/01/2019 2
05/01/2019 0
06/01/2019 0
07/01/2019 3
  7 Comments
Redouane Ch
Redouane Ch on 22 Sep 2019
your suggestion works fine for me, but the results start from the first line of data.
if our file starts with "2/1/2019" it will not show "1/1/2019 0"
Bruno Luong
Bruno Luong on 22 Sep 2019
Yes that's how it supposes to work since 1/1/2019 is not belong to any gap.
Without any specification, how should the filling code decides to add counting from 1/1/2019 and not from 1/1/2000, or 1/1/1900?
If you want the code to makes the count from whatever the date, replace
min(dn)
occurences by
datenum('1/1/2019',...)

Sign in to comment.

More Answers (0)

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!