Organising Dates based on User ID and compute weekly average

1 view (last 30 days)
Ganesh Naik on 23 Nov 2021
Commented: Peter Perkins on 29 Nov 2021
Hi all, I would like to organise the dates for each user based on their ID. I would like to start the beginning date for "Day1" for each user and then count the dates accordingly. Once the dates are assigned to the single user then for the next user the starting date should be counted as "Day1 and so on.
For example if user ID: 1024 has the first date as '04-02-2020' it should be counted as day1 for him and if the next date is 07-02-2020', 4th day and so on. Once the count for the particular user is finished then the count should reset for the next user as Day1, Day5 etc.
In addition I also would like to compute weekly average based on days (for example 3 days in a week 3/7, 6 days in a week 6/7 etc).
Any help in this regard is highly appreciated. The sample data is available below:
Peter Perkins on 23 Nov 2021
Ganesh, very likey this is straight-forward using timetables and retime, but your descriptiopn is not clear. Please describe exactly what you expect to end up with, with a short example. Both things. Are you just looking for the number of days for each ID?

Peter Perkins on 23 Nov 2021
If it's just counting number of days for each ID, try this:
tt =
1686×1 timetable
Date ID
___________ _____
02-Jul-2020 87609
03-Jul-2020 87609
08-Jul-2020 87609
09-Jul-2020 87609
10-Jul-2020 87609
[snip]
>> counts = varfun(@length,tt,"GroupingVariables","ID","OutputFormat","table")
counts =
12×2 table
ID GroupCount
_____ __________
87595 148
87596 238
87598 228
87600 50
87601 254
87602 237
87603 201
87604 44
87605 89
87606 115
87607 32
87609 50
Peter Perkins on 29 Nov 2021
Ganesh, that's not much to go on. Post what you have done so far.

R2021b

Community Treasure Hunt

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

Start Hunting!