Replacing multiple cells with median if value of first column is the same
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Rasmus Larsen
am 1 Nov. 2015
Kommentiert: Rasmus Larsen
am 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 Kommentare
Akzeptierte Antwort
the cyclist
am 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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Optimization finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
