Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

텍스트 파일에서 혼합된 데이터를 테이블로 가져오기

이 예제에서는 readtable 함수를 사용하여 텍스트 데이터와 숫자형 데이터가 혼합된 데이터를 테이블로 가져오고, 변수의 데이터형을 지정한 다음, 테이블에 새 변수를 추가하는 방법을 보여줍니다.

샘플 파일 개요

샘플 파일 outages.csv에는 미국 내의 정전 기록을 나타내는 데이터가 들어 있습니다. 이 파일의 처음 몇 라인은 다음과 같습니다.

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을 사용하여 데이터를 가져온 후 처음 5개 행을 표시합니다. readtable 함수는 구분 기호와 변수 유형을 자동으로 감지합니다.

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'   }

가져오기 전에 변수 데이터형 지정하기

파일의 변수 유형에 따라 변수 데이터형을 적절한 MATLAB 데이터형으로 업데이트하면 데이터를 처리하는 데 도움이 될 수 있습니다. 예를 들어, outages.csv의 첫 번째 열과 여섯 번째 열은 categorical형입니다. 이 두 열을 categorical형 배열로 지정하면, categorical형 데이터를 처리하는 MATLAB 함수를 활용할 수 있습니다.

다음 방법 중 하나를 사용하여 변수의 데이터형을 지정합니다.

  • readtableFormat 이름-값 쌍 지정

  • 파일에 대한 가져오기 옵션의 VariableTypes 속성 설정

Format 이름-값 쌍을 사용하여 변수 데이터형을 지정하고 데이터를 읽어온 다음 처음 5개 행을 표시합니다. formatSpec 지정자의 %{yyyy-MM-dd HH:mm}D 부분에서 중괄호 사이에 있는 텍스트는 날짜/시간 데이터의 형식을 설명합니다. Format에 지정된 값은 다음을 지정합니다.

  • 파일의 첫 번째 열과 마지막 열을 categorical형 데이터로

  • 두 번째 열과 다섯 번째 열을 형식이 지정된 날짜/시간 데이터로

  • 세 번째 열과 네 번째 열을 부동소수점 값으로

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   

또는, 가져오기 옵션의 setvartype 함수를 사용하여 변수의 데이터형을 지정합니다. 먼저 파일에 대한 import options 객체를 생성합니다. 데이터 파일에는 여러 유형의 변수가 포함되어 있습니다. 첫 번째 변수와 마지막 변수를 categorical형 배열로 지정하고, 두 번째 변수와 다섯 번째 변수를 datetime형 배열로 지정하고, 나머지 변수는 double형으로 지정합니다.

opts = detectImportOptions('outages.csv');
varNames = opts.VariableNames ; % variable names
varTypes = {'categorical','datetime','double',...   
                'double','datetime','categorical'}; 
opts = setvartype(opts,varNames,varTypes);                      

readtableopts와 함께 사용하여 데이터를 가져온 다음 처음 5개 행을 표시합니다.

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에는 OutageTimeRestorationTime이 포함되어 있습니다. 각 정전의 지속 시간을 계산하고 이 데이터를 테이블에 추가합니다.

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

참고 항목

| | | | | |

관련 항목