Extract from Structure and make a table

Hello Everyone,
I downloaded 55 stocks data from yahoo finance for past 5 years.
mydata = hist_stock_data(now-5*365,now,'T','VZ','GOOG','NFLX','FB','EBAY','SBUX','TSLA','NKE','AMZN','KO','CL','PEP','PG','WMT','XOM','EOG','KMI','CVX','WMB','MS','JPM','WFC','BAC','GS','CVS','PFE','JNJ','UNH','ANTM','BA','CAT','HON','FDX','NOC','MSFT','CSCO','MU','ADBE','NVDA','SHW','FMC','MOS','CF','LYB','CBRE','SPG','KIM','BXP','AVB','FE','NI','PPL','AEP','CMS')
The data is stored as 1x55 structure format containing field names Date(1259x1 cell [Open,High,Low,Close,AdjClose,Volume,Ticker](1259x1 double)
I want to extract fields Date,AdjClose and concatenate all three in one table. How do i do it?. Also need to extract Ticker names and replace AdjClose with ticker names
Basically from the structure, I want to extract fields Date and AdjClose for all 55 stocks and make a table and replace AdjClose with ticker names. Any help is greatly appreciated. Thank you

Answers (1)

Image Analyst
Image Analyst on 25 Dec 2020
Edited: Image Analyst on 25 Dec 2020
See attached demo where I do the same thing - read in Yahoo financial data that I downloaded from their web site.
Or use this function:
Description
T = struct2table(S) converts the structure array, S, to a table, T. Each field of S becomes a variable in T.
T = struct2table(S,Name,Value) creates a table from a structure array, S, with additional options specified by one or more Name,Value pair arguments.

3 Comments

Hey Image Analyst,
T = struct2table makes another table with variable names Date,High,Low,Close,AdjClose,Volume for 55 different stocks as 1259x1 double. Ticker symbols are at the end column but there is AdjClose values inside the cell. How do I extract those values for all 55 stocks with dates
Basically, make a table with Ticker name as variable names along with their respective AdjClose values.
%mydata = hist_stock_data(now-5*365,now,'T','VZ','GOOG','NFLX','FB','EBAY','SBUX','TSLA','NKE','AMZN','KO','CL','PEP','PG','WMT','XOM','EOG','KMI','CVX','WMB','MS','JPM','WFC','BAC','GS','CVS','PFE','JNJ','UNH','ANTM','BA','CAT','HON','FDX','NOC','MSFT','CSCO','MU','ADBE','NVDA','SHW','FMC','MOS','CF','LYB','CBRE','SPG','KIM','BXP','AVB','FE','NI','PPL','AEP','CMS')
T = struct2table(mydata)
StockTicker = T.Ticker'
Date = T.Date
AdjClose = T.AdjClose
Output for Date is
55×1 cell array
{1259×1 cell}
{1259×1 cell}
{1259×1 cell}
{1259×1 cell}
{1259×1 cell}
{1259×1 cell}
{1259×1 cell}...
Output for StockTicker is all the stock names in row format
Output for AdjClose is
55×1 cell array
{1259×1 double}
{1259×1 double}
{1259×1 double}
{1259×1 double}
{1259×1 double}
{1259×1 double}
{1259×1 double}
{1259×1 double}...
What I want to do now is extract the values inside this 55x1 cell array for both Date and Adj close and assign the values to stock names in StockTicker and make a table. Output should look like
Date T VZ GOOG NFLX
12/21/2020 1 2 3 4
12/22/2020 5 6 7 8
I don't know - we'd have to play around with it like you've been doing. I can't just imagine trying code and debugging it in my head for something this complicated. You'd have to attach your table in a .mat file or else the original data files and code for reading them in, then someone can try something. But it would be something like getting each value into a column vector then use table():
table(dates, T, VZ, Goog, Nflx, 'VariableNames', {'Date', 'T', 'GOOG', 'NFLX'});

Sign in to comment.

Products

Release

R2020b

Asked:

on 25 Dec 2020

Commented:

on 25 Dec 2020

Community Treasure Hunt

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

Start Hunting!