Когда у вас есть данные, хранящиеся в нескольких файлах электронной таблицы, используйте spreadsheetDatastore
для управления и импорта данных. После создания datastore можно считать все данные из набора одновременно, а можно читать по одному файлу за раз.
Если папка C:\Data
содержит набор файлов электронной таблицы, а затем захватывает местоположение данных в location
. Данные, используемые в этом примере, содержат 10
файлы электронной таблицы, где каждый файл содержит 10
строки данных. Ваши результаты будут отличаться в зависимости от ваших файлов и данных.
location = 'C:\Data';
dir(location)
. .. File01.xls File02.xls File03.xls File04.xls File05.xls File06.xls File07.xls File08.xls File09.xls File10.xls
Создайте datastore, используя расположение файлов.
ds = spreadsheetDatastore(location)
ds = SpreadsheetDatastore with properties: Files: { 'C:\Data\File01.xls'; 'C:\Data\File02.xls'; 'C:\Data\File03.xls' ... and 7 more } AlternateFileSystemRoots: {} Sheets: '' Range: '' Sheet Format Properties: NumHeaderLines: 0 ReadVariableNames: true VariableNames: {'LastName', 'Gender', 'Age' ... and 7 more} VariableTypes: {'char', 'char', 'double' ... and 7 more} Properties that control the table returned by preview, read, readall: SelectedVariableNames: {'LastName', 'Gender', 'Age' ... and 7 more} SelectedVariableTypes: {'char', 'char', 'double' ... and 7 more} ReadSize: 'file'
Чтение данных из Datastore
Используйте read
или readall
функций для импорта данных из datastore. Если данные из набора помещаются в памяти, то импортировать все это можно сразу с помощью readall
функция.
allData = readall(ds); size(allData)
ans = 1×2
100 10
Также можно импортировать данные по одному файлу за раз с помощью read
функция. Чтобы контролировать объем импортированных данных, перед вызовом read
, отрегулируйте ReadSize
свойство datastore. Можно задать ReadSize
на 'file'
, 'sheet'
, или положительное целое число.
Если ReadSize
является 'file'
, затем каждый вызов на read
возвращает данные по одному файлу за раз.
Если ReadSize
является 'sheet'
, затем каждый вызов на read
возвращает данные по одному листу за раз.
Если ReadSize
является положительным целым числом, затем каждый вызов в read
возвращает количество строк, заданное в ReadSize
или меньше, если оно достигает конца данных.
ds.ReadSize = 'file'; firstFile = read(ds) % reads first file
firstFile=10×10 table
LastName Gender Age Location Height Weight Smoker Systolic Diastolic SelfAssessedHealthStatus
__________ ________ ___ ___________________________ ______ ______ _______ ________ _________ ________________________
'Smith' 'Male' 38 'County General Hospital' 71 176 'true' 124 93 'Excellent'
'Johnson' 'Male' 43 'VA Hospital' 69 163 'false' 109 77 'Fair'
'Williams' 'Female' 38 'St. Mary's Medical Center' 64 131 'false' 125 83 'Good'
'Jones' 'Female' 40 'VA Hospital' 67 133 'false' 117 75 'Fair'
'Brown' 'Female' 49 'County General Hospital' 64 119 'false' 122 80 'Good'
'Davis' 'Female' 46 'St. Mary's Medical Center' 68 142 'false' 121 70 'Good'
'Miller' 'Female' 33 'VA Hospital' 64 142 'true' 130 88 'Good'
'Wilson' 'Male' 40 'VA Hospital' 68 180 'false' 115 82 'Good'
'Moore' 'Male' 28 'St. Mary's Medical Center' 68 183 'false' 115 78 'Excellent'
'Taylor' 'Female' 31 'County General Hospital' 66 132 'false' 118 86 'Excellent'
secondFile = read(ds) % reads second file
secondFile=10×10 table
LastName Gender Age Location Height Weight Smoker Systolic Diastolic SelfAssessedHealthStatus
__________ ________ ___ ___________________________ ______ ______ _______ ________ _________ ________________________
'Anderson' 'Female' 45 'County General Hospital' 68 128 'false' 114 77 'Excellent'
'Thomas' 'Female' 42 'St. Mary's Medical Center' 66 137 'false' 115 68 'Poor'
'Jackson' 'Male' 25 'VA Hospital' 71 174 'false' 127 74 'Poor'
'White' 'Male' 39 'VA Hospital' 72 202 'true' 130 95 'Excellent'
'Harris' 'Female' 36 'St. Mary's Medical Center' 65 129 'false' 114 79 'Good'
'Martin' 'Male' 48 'VA Hospital' 71 181 'true' 130 92 'Good'
'Thompson' 'Male' 32 'St. Mary's Medical Center' 69 191 'true' 124 95 'Excellent'
'Garcia' 'Female' 27 'VA Hospital' 69 131 'true' 123 79 'Fair'
'Martinez' 'Male' 37 'County General Hospital' 70 179 'false' 119 77 'Good'
'Robinson' 'Male' 50 'County General Hospital' 68 172 'false' 125 76 'Good'
readtable
| spreadsheetDatastore