MATLAB: Standard deviation, Mean values for each class

csverrorbarloopmeanstandard deviation

Hello, I have a problem with a code.
First of all I have a .csv file with 2 columns, as I show you in the Image. in the first column the data are split by 0.5 (1,1.5,2).
I would like to find mean values and standard deviation for each of one class, I mean one value of standard deviation and mean value for the data with 1 in , one value of standard deviation for the 1.5 and one value of standard deviation for the 2.
I mean I wanna use the errorbar command.
I think I should use a loop who reads 1st column one by one but I can not make it.
Could anyone help me?

Best Answer

Use grpstats() if you have the Stats & Machine Learning Toolbox.
data = [ 1 1 1.5 1.5 2 2; 10 9 7 6 3.5 8]',;
[dataMean, dataStd] = grpstats(data(:,2), data(:,1), {'mean', 'std'})
If your data are in table format,
Tstats = grpstats(T, 'data1', {'mean','std'});
% ^^^^^ VariableName for column 1
If you don't have Stats & Machine Learning Toolbox,
stats = splitapply(@(x)[mean(x), std(x)], data(:,2), findgroups(data(:,1)));