loop based on a condition in another column

12 Ansichten (letzte 30 Tage)
Simon Jurgies
Simon Jurgies am 18 Mär. 2021
Bearbeitet: Seth Furman am 18 Mär. 2021
I'm working with a 694672x4 table containing the PermNo., date, CUSIP and stock price of a multitude of shares. The data is sorted such that the full time series of a stock is listed below the full time series of the following stock and so forth. (Pls see photo below). I am trying to calculate the daily returns of each stock individually, however I struggle with the way the data is structured. As you can see, column 3 contains the CUSIP which is an individual identifier to every stock in the sample. I am now trying to tell MatLab to calculate the daily returns (using (diff(log(X))))for all rows with the same identifier and start from scratch once the identifier changes. Unfortunately, I cannot provide any initial code as I don't know where to start...
Thank you in advance!
  4 Kommentare
Jan
Jan am 18 Mär. 2021
func = @(x) diff(log(x))
Walter Roberson
Walter Roberson am 18 Mär. 2021
Probably you will need
func = @(x) {diff(log(x))}
That is because you will be processing vectors, and diff() of a vector is a vector (one shorter), but splitapply() requires that you return a scalar.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Seth Furman
Seth Furman am 18 Mär. 2021
Bearbeitet: Seth Furman am 18 Mär. 2021
To add to Walter's answer, you might also consider groupsummary.
>> rng default
>> t = table([1;1;1;2;2;2;2],rand(7,1),'VariableNames',{'Group','Data'})
t =
7×2 table
Group Data
_____ _______
1 0.81472
1 0.90579
1 0.12699
2 0.91338
2 0.63236
2 0.09754
2 0.2785
>> groupsummary(t,'Group',@(x){diff(log(x))})
ans =
2×3 table
Group GroupCount fun1_Data
_____ __________ ____________
1 3 {2×1 double}
2 4 {3×1 double}

Weitere Antworten (0)

Kategorien

Mehr zu Big Data Processing 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!

Translated by