Replacing multiple cells with median if value of first column is the same
1 view (last 30 days)
Show older comments
Rasmus Larsen
on 1 Nov 2015
Commented: Rasmus Larsen
on 1 Nov 2015
I have a 302451x3 matrix with stock quotes (bid / offers). Timestamp (in seconds) is in the first column.
If the timestamp is the same for several quotes (the rows) i want to replace all the rows with this timestamp with 1 single row that has that particular timestamp and with the median of the bid / offers in the other columns.
For example the first 60 rows share the same timestamp (34287) and the bids range from 87.57 to 87.67. The median is 87.60.
How do i replace these 60 rows with 1 row where the timestamp 34287 is the value in the first column and this 87.60 median is the value in the second column?
Hope you understand
2 Comments
Accepted Answer
the cyclist
on 1 Nov 2015
M = [32767 2 3;
32767 3 4;
32767 4 5;
32768 3 4;
32768 4 5;
32769 4 5;
32769 5 6;
32770 5 6];
[uniqueDatenum,~,idx] = unique(M(:,1));
medianBid = accumarray(idx,M(:,2),[],@median);
medianOffer = accumarray(idx,M(:,3),[],@median);
medianM = [uniqueDatenum,medianBid,medianOffer]
I suggest a careful reading and understanding of the accumarray documentation I linked to.
More Answers (0)
See Also
Categories
Find more on Get Started with MATLAB 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!