matlab如何导入多文本数据,将文本文件中的混合数据导入表
樣本文件概述
樣本文件 outages.csv 包含表示美國(guó)電力中斷的數(shù)據(jù)。文件的前幾行如下:
Region,OutageTime,Loss,Customers,RestorationTime,Cause
SouthWest,2002-01-20 11:49,672,2902379,2002-01-24 21:58,winter storm
SouthEast,2002-01-30 01:18,796,336436,2002-02-04 11:20,winter storm
SouthEast,2004-02-03 21:17,264.9,107083,2004-02-20 03:37,winter storm
West,2002-06-19 13:39,391.4,378990,2002-06-19 14:27,equipment fault
讀取文本文件
使用 readtable 導(dǎo)入數(shù)據(jù),并顯示前五行。readtable 函數(shù)會(huì)自動(dòng)檢測(cè)分隔符和變量類型。
T = readtable('outages.csv');
head(T,5) % show first 5 rows of table
ans=5×6 table
Region OutageTime Loss Customers RestorationTime Cause
_____________ ________________ ______ __________ ________________ ___________________
{'SouthWest'} 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 {'winter storm' }
{'SouthEast'} 2003-01-23 00:49 530.14 2.1204e+05 NaT {'winter storm' }
{'SouthEast'} 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 {'winter storm' }
{'West' } 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 {'equipment fault'}
{'MidWest' } 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 {'severe storm' }
在導(dǎo)入之前指定變量數(shù)據(jù)類型
根據(jù)文件中的變量類型,將變量數(shù)據(jù)類型更新為相應(yīng)的 MATLAB 數(shù)據(jù)類型可能有益于數(shù)據(jù)。例如,outages.csv 中的第一列和第六列為分類列。通過(guò)將這兩個(gè)列指定為 categorical 數(shù)組,您可以運(yùn)用 MATLAB 函數(shù)處理分類數(shù)據(jù)。
要指定變量的數(shù)據(jù)類型,有如下方法可以選擇:
指定 readtable 中的 Format 名稱-值對(duì)組
設(shè)置文件導(dǎo)入選項(xiàng)的 VariableTypes 屬性
使用 Format 名稱-值對(duì)組指定變量的數(shù)據(jù)類型,讀取數(shù)據(jù),并顯示前五行數(shù)據(jù)。在 formatSpec 設(shè)定符的 %{yyyy-MM-dd HH:mm}D 部分中,花括號(hào)之間的文本描述了日期和時(shí)間數(shù)據(jù)的格式。Format 中指定的值指定了:
文件中的第一列和最后一列為分類數(shù)據(jù)
第二列和第五列為格式化的日期和時(shí)間數(shù)據(jù)
第三列和第四列為浮點(diǎn)值
formatSpec = '%C%{yyyy-MM-dd HH:mm}D%f%f%{yyyy-MM-dd HH:mm}D%C';
T = readtable('outages.csv','Format',formatSpec);
head(T,5)
ans=5×6 table
Region OutageTime Loss Customers RestorationTime Cause
_________ ________________ ______ __________ ________________ _______________
SouthWest 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 winter storm
SouthEast 2003-01-23 00:49 530.14 2.1204e+05 NaT winter storm
SouthEast 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 winter storm
West 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 equipment fault
MidWest 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 severe storm
或者,通過(guò)使用導(dǎo)入選項(xiàng)的 setvartype 函數(shù),指定變量的數(shù)據(jù)類型。首先,為文件創(chuàng)建一個(gè)導(dǎo)入選項(xiàng)對(duì)象。數(shù)據(jù)文件包含了不同類型的變量。指定第一個(gè)和最后一個(gè)變量為 categorical 數(shù)組,第二個(gè)和第五個(gè)變量為 datetime 數(shù)組,剩余變量為 double。
opts = detectImportOptions('outages.csv');
varNames = opts.VariableNames ; % variable names
varTypes = {'categorical','datetime','double',...
'double','datetime','categorical'};
opts = setvartype(opts,varNames,varTypes);
將 readtable 與 opts 配合使用以導(dǎo)入數(shù)據(jù),然后顯示前五行。
T = readtable('outages.csv',opts);
head(T,5)
ans=5×6 table
Region OutageTime Loss Customers RestorationTime Cause
_________ ________________ ______ __________ ________________ _______________
SouthWest 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 winter storm
SouthEast 2003-01-23 00:49 530.14 2.1204e+05 NaT winter storm
SouthEast 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 winter storm
West 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 equipment fault
MidWest 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 severe storm
將新變量追加到表中
表 T 中包含了 OutageTime 和 RestorationTime。計(jì)算每次電力中斷的持續(xù)時(shí)間并將此數(shù)據(jù)追加到表中。
T.Duration = T.RestorationTime - T.OutageTime;
head(T,5)
ans=5×7 table
Region OutageTime Loss Customers RestorationTime Cause Duration
_________ ________________ ______ __________ ________________ _______________ _________
SouthWest 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 winter storm 148:32:00
SouthEast 2003-01-23 00:49 530.14 2.1204e+05 NaT winter storm NaN
SouthEast 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 winter storm 226:59:00
West 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 equipment fault 00:26:00
MidWest 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 severe storm 65:05:00
總結(jié)
以上是生活随笔為你收集整理的matlab如何导入多文本数据,将文本文件中的混合数据导入表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PHP Calendar 函数,word
- 下一篇: Spring Boot 设置 ASCII