Info

This question is closed. Reopen it to edit or answer.

Trasform 'values' inside table in numeric values always inside a table

2 views (last 30 days)
Hi guys,
I have a problem.
I get a dataset table in this format, with values between ' ' :
Date var_1 var_2 var_3 var_4 var_5 var_6
01-01-90 'NaN' 'NaN' 'NaN' 'NaN' 'NaN' 'NaN'
01-01-91 '-0.012' '0' '0.028' '0' '0.017' '-0.016'
01-01-92 '0' '0.020' '0.105' '0' '0.034' '0.048
01-01-93 '0.006' '0' '-0.051' '0' '0' '0'
01-01-94 '0.007' '0' '0.025' '0' '-0.008' '-0.048'
My goal is to compute mean, std, etc , and with this format is impossible to make these statistics.
how do I trasform these values into numerical values? Always in a table?
Thanks
  1 Comment
madhan ravi
madhan ravi on 14 Jul 2020
Instead of pasting the output from a command window , will you in the future upload data as .mat file or a copy paste format so that it’s easier to answer??

Answers (2)

Matt J
Matt J on 14 Jul 2020
Edited: Matt J on 14 Jul 2020
One way,
varfun(@(z) mean(str2double(z)) , yourTable(:,2:end))

madhan ravi
madhan ravi on 14 Jul 2020
Edited: madhan ravi on 14 Jul 2020
The correct way:
T(:,2:end) = num2cell(cellfun(@str2double,T{:,2:end},'un',0)); % T your table
mean(cell2mat(T{:,2:end}),'omitnan')

This question is closed.

Community Treasure Hunt

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

Start Hunting!