Name table columns with variable index

1 view (last 30 days)
I'll take to explain a 3 columns table but I actually have around 100 columns.
I have a 3 columns table, with each column named with a label Ux,Uy,Uz and filled with 18000 values
I want to calculate mean value and standard deviation for each column and put it in a 6 columns table with columns named like [Uxmean,Uxstd,Uymean,Uystd,...]
Here is my program.
file = uigetfile();
tab = readtable(file);
varnames = tab.Properties.VariableNames(1:end);
doub = table2array(tab(:,[1:end]));
for i = [1:width(doub)]
cell(2*i-1) = (mean(doub(:,i)));
cell(2*i) = (std(doub(:,i)));
end
tab =array2table(cell);
% for i = [1:width(doub)]
% tab.Properties.VariableNames(2*i-1)=varnames(i) "mean"
% tab.Properties.VariableNames(2*i)=varnames(i) "std"
% end
It works until the commented lines, when i try to add the index "mean" to odd columns and "std" to even columns
I'm very new on Matlab so i probably forgot some details and there is for sure a easier method so tell me.
Thank you!

Accepted Answer

Chunru
Chunru on 27 Apr 2022
Edited: Chunru on 27 Apr 2022
tab = readtable('https://www.mathworks.com/matlabcentral/answers/uploaded_files/980210/MATWORKS.csv');
head(tab)
ans = 8×3 table
Ux Uy Uz ________ ________ ________ -0.46271 0.18824 0.38583 -0.41488 0.55131 0.37074 -0.49457 0.18599 0.2409 -0.30067 0.3442 -0.20573 -0.54151 0.29827 -0.15212 -0.85707 -0.12284 -0.15933 -1.0658 -0.42837 -0.53856 -0.36889 -0.58331 -0.87129
varnames = tab.Properties.VariableNames(1:end)
varnames = 1×3 cell array
{'Ux'} {'Uy'} {'Uz'}
m_tab = varfun(@mean, tab)
m_tab = 1×3 table
mean_Ux mean_Uy mean_Uz _______ _______ ________ -1.0295 -2.4166 0.033029
s_tab =varfun(@std, tab)
s_tab = 1×3 table
std_Ux std_Uy std_Uz _______ ______ _______ 0.94946 2.1712 0.63944
output = [m_tab s_tab]
output = 1×6 table
mean_Ux mean_Uy mean_Uz std_Ux std_Uy std_Uz _______ _______ ________ _______ ______ _______ -1.0295 -2.4166 0.033029 0.94946 2.1712 0.63944
idx = [0; 3]+(1:3); idx=idx(:);
output=output(:, idx)
output = 1×6 table
mean_Ux std_Ux mean_Uy std_Uy mean_Uz std_Uz _______ _______ _______ ______ ________ _______ -1.0295 0.94946 -2.4166 2.1712 0.033029 0.63944
  3 Comments

Sign in to comment.

More Answers (0)

Categories

Find more on App Building in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!