Calculating returns of a table structure and error operator '-' is not supported for operands of type 'table'.

1 次查看(过去 30 天)
I have stock prices for 100 firms over 5000 days. Yielding a table of 5000x1000
Now I proposed calculating the column of returns for stock i by
Ri = (stock(2:end,i)-stock(1:end-1,i))./stock(1:end-1,i);
However I get the error
Operator '-' is not supported for operands of type 'table'.
Should I transform my table to a different format. Or is there a way to do this with a table?

采纳的回答

Walter Roberson
Walter Roberson 2022-4-3
Ri = diff(stock{:,i}) ./ stock{1:end-1,i}
Or to vectorize,
Ri = diff(stock{:,:}) ./ stock{1:end-1,:}
Some people prefer to use
Ri = diff(table2array(stock)) ./ table2array(stock(1:end-1,:))

更多回答(1 个)

the cyclist
the cyclist 2022-4-3
编辑:the cyclist 2022-4-3
You don't need to transform to a different variable class, but you need to use different syntax to access the contents of a table than the table itself. Specifically, you should use curly brackets. Try, for example
stock{1:end-1,i}
For more details, see "Access Data in Tables" on this documentation page about Tables.

类别

Help CenterFile Exchange 中查找有关 Tables 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by