-
Notifications
You must be signed in to change notification settings - Fork 1
/
importfile.m
86 lines (75 loc) · 2.75 KB
/
importfile.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
function tableout = importfile(workbookFile,sheetName,startRow,endRow)
%IMPORTFILE Import data from a spreadsheet
% DATA = IMPORTFILE(FILE) reads data from the first worksheet in the
% Microsoft Excel spreadsheet file named FILE and returns the data as a
% table.
%
% DATA = IMPORTFILE(FILE,SHEET) reads from the specified worksheet.
%
% DATA = IMPORTFILE(FILE,SHEET,STARTROW,ENDROW) reads from the specified
% worksheet for the specified row interval(s). Specify STARTROW and
% ENDROW as a pair of scalars or vectors of matching size for
% dis-contiguous row intervals. To read to the end of the file specify an
% ENDROW of inf.
%
% Non-numeric cells are replaced with: NaN
%
% Example:
% carData = importfile('2004dat.xlsx','Sheet1',2,2338);
%
% See also XLSREAD.
% Copyright 2015 The MathWorks, Inc.
% Auto-generated by MATLAB on 2015/02/03 10:08:21
%% Input handling
% If no sheet is specified, read first sheet
if nargin == 1 || isempty(sheetName)
sheetName = 1;
end
% If row start and end points are not specified, define defaults
if nargin <= 3
startRow = 2;
endRow = 2338;
end
%% Import the data
[~, ~, raw] = xlsread(workbookFile, sheetName, sprintf('A%d:X%d',startRow(1),endRow(1)));
for block=2:length(startRow)
[~, ~, tmpRawBlock] = xlsread(workbookFile, sheetName, sprintf('A%d:X%d',startRow(block),endRow(block)));
raw = [raw;tmpRawBlock]; %#ok<AGROW>
end
raw(cellfun(@(x) ~isempty(x) && isnumeric(x) && isnan(x),raw)) = {''};
cellVectors = raw(:,[2,3,4,6,8,9,14,17]);
raw = raw(:,[1,5,7,10,11,12,13,15,16,18,19,20,21,22,23,24]);
%% Replace non-numeric cells with NaN
R = cellfun(@(x) ~isnumeric(x) && ~islogical(x),raw); % Find non-numeric cells
raw(R) = {NaN}; % Replace non-numeric cells
%% Create output variable
I = cellfun(@(x) ischar(x), raw);
raw(I) = {NaN};
data = reshape([raw{:}],size(raw));
%% Create table
tableout = table;
%% Allocate imported array to column variable names
tableout.Year = data(:,1);
tableout.MfrName = cellVectors(:,1);
tableout.CarLine = cellVectors(:,2);
tableout.Car_Truck = cellVectors(:,3);
tableout.EngDisp = data(:,2);
tableout.Police = cellVectors(:,4);
tableout.RatedHP = data(:,3);
tableout.Transmission = cellVectors(:,5);
tableout.Drive = cellVectors(:,6);
tableout.Weight = data(:,4);
tableout.Comp = data(:,5);
tableout.AxleRatio = data(:,6);
tableout.EVSpeedRatio = data(:,7);
tableout.AC = cellVectors(:,7);
tableout.PRP = data(:,8);
tableout.FuelType = data(:,9);
tableout.City_Highway = cellVectors(:,8);
tableout.HC = data(:,10);
tableout.CO = data(:,11);
tableout.CO2 = data(:,12);
tableout.NOX = data(:,13);
tableout.MPG = data(:,14);
tableout.Valves_Cyl = data(:,15);
tableout.CoastDownTime = data(:,16);