Hello Matlab Community,
I got a not-so-regular data table (I converted it to .csv) containing identically named columns, and I have to calculate mean values both horizontally and vertically.
The schame is the following: The first cells of each row is a string, the others are doubles.
a b b b c c [...]x x y z z z [...]
The output table should be:
a b c [...] x y z [...]
Where the values are the mean values, like the x row is the means of
-all the x rows (like the 'grup by' command in sql) and
-all the b, c, … values
I know that in standard database management I would have to re-structure and normalize the table, but is there any solution in Matlab to solve this?
All I could try is to group the rows:
function [ C ] = CsvAvg( in_csv )T = readtable(in_csv);C = table;C(1,1)=T(1,1);for i=2:height(T)-1 if strcmp(strjoin(table2cell(T(i,1))),strjoin(table2cell(T(i-1,1))))==0 C(i,1)=T(i,1); for j=2:width(T) %
end else C(i,1)=cell2table(cellstr(' ')); endendend
I noticed that Matlab re-name the identical column names (which is correct in most cases).
Thank you in advance and Im sorry for my lack of English language skills. Im a beginner in Matlab programming too.
Best Answer