How to calculate the mean/median/Standard deviation for each column in a table
조회 수: 372 (최근 30일)
이전 댓글 표시
Here I have table has 716rows*9 coloumns called Analysis1 as shown in figure1.
I would like to each the following steps:
- The calcualtions for n number of files like this in a folder
- The formula should be calculated for each coulmn (not for rows) and all the values shoul be store in a one seperate file so that I can plot a graph
I have tried the formula using median(Analysis1) but showing the permute error as shown in figure 2.
I have suceeded applying the formula for an individual coulumn like as shown in figure2:
- Result1 = median(Analysis.Time)
- Result2 = median(Analysis.TempL1)
Any suggestion would be appreciated to solve this issue. Thanks in advance.
댓글 수: 0
채택된 답변
Steven Lord
2020년 12월 4일
Let's look at a sample table.
load patients
T = table(LastName, Smoker, Height, Weight, Systolic, Diastolic);
head(T)
It makes sense to compute the mean for four variables in this table, but not for the LastName or Smoker variables.
M = varfun(@mean, T, 'InputVariables', @isnumeric)
This looks for all the variables in T for which isnumeric returns true and calls mean on those variables.
추가 답변 (1개)
Image Analyst
2020년 12월 4일
Did you try something like this (untested)
m = table2array(yourTable); % Convert table to regular matrix.
columnMeans = mean(m, 1); % Get the mean of each column in the matrix.
댓글 수: 11
Image Analyst
2020년 12월 8일
If you want only one workbook for all the results, do this:
% Specify the folder (directory) of CSV files that you want to process.
myFolder = '/Users/xxxxxxx/Desktop/Tests/27.11.2020 csv/Total';
% Get a wildcard pattern so we can get a list of all CSV files in the folder.
filePattern = fullfile(myFolder, '*.csv');
% Below is the code for looping over all the files, reading them in,
% computing the column means, and writing that to an output workbook
% (one output .XLSX file for each input .CSV file).
theFiles = dir(filePattern); % This is a structure.
% Make a 2-D array to hold all the column means
columnMeans = zeros(9, length(theFiles)); % One column for each file.
for k = 1: length(theFiles)
baseFileName = theFiles(k).name;
fullInputCSVFileName = fullfile(theFiles(k).folder, baseFileName);
fprintf('Processing %s...\n', fullInputCSVFileName);
% Read this matrix from the csv file.
thisMatrix = dlmread(fullInputCSVFileName,',',1,2);
% Get the means of each column.
theMeans = mean(thisMatrix,1);
% Convert from a row vector to a column vector because that's how he wants the output file.
columnMeans(:, k) = theMeans'; % Add this column vector to the 2-D array.
end
% Create a name for the output Excel workbook.
baseFileName = 'Column Means.xlsx'; % Whatever you want to call it
% Prepend the folder to get the full file name.
fullWorkBookFileName = fullfile(myFolder, baseFileName);
% Write the output workbook.
fprintf('Writing output Excel workbook : %s...\n', fullWorkBookFileName);
writematrix(columnMeans, fullWorkBookFileName)
% Alert user that we're done.
message = sprintf('Done processeing %d CSV files.\n', length(theFiles));
uiwait(msgbox(message));
참고 항목
카테고리
Help Center 및 File Exchange에서 Startup and Shutdown에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!