이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

stack

여러 변수의 데이터를 단일 변수로 누적하기

구문

S = stack(U,vars)
S = stack(U,vars,Name,Value)
[S,iu] = stack(___)

설명

예제

S = stack(U,vars)는 테이블 또는 타임테이블 U를 동일하지만 누적되어 쌓인 테이블 또는 타임테이블 S로 변환합니다. stack 함수는 vars에서 지정한 U의 여러 변수를 S의 단일 변수로 누적해 쌓습니다. 일반적으로, S에는 U보다 변수 개수가 적지만, 행 개수는 더 많습니다.

출력 인수 S에는 각 행의 누적된 데이터가 U의 어느 변수에서 제공되었는지를 나타내는 새로운 categorical형 변수가 있습니다. stack은 누적되지 않은 U의 변수에서 데이터를 복제합니다.

  • U가 테이블인 경우 행 이름을 누적할 수 없습니다.

  • U가 타임테이블인 경우 행 시간값을 누적할 수 없습니다.

예제

S = stack(U,vars,Name,Value)는 하나 이상의 Name,Value 쌍 인수를 추가 옵션으로 지정하여 테이블 U를 변환합니다.

예를 들어, U에서 새 변수와 누적된 변수에 대한 변수 값을 지정할 수 있습니다.

예제

[S,iu] = stack(___)S의 행과 U의 행 사이의 대응 관계를 나타내는 인덱스 벡터 iu도 반환합니다. 위에 열거된 모든 입력 인수를 사용할 수 있습니다.

예제

모두 축소

3개의 개별 시험에서 얻은 시험 점수를 포함하는 테이블을 만듭니다. 테이블은 누적되지 않은 형식입니다.

Test1 = [93;57;87;89];
Test2 = [89;77;92;86];
Test3 = [95;62;89;91];

U = table(Test1,Test2,Test3)
U=4×3 table
    Test1    Test2    Test3
    _____    _____    _____

     93       89       95  
     57       77       62  
     87       92       89  
     89       86       91  

테이블에는 4개의 행과 3개의 변수가 있습니다.

시험 점수를 단일 변수에 누적합니다.

S = stack(U,1:3)
S=12×2 table
    Test1_Test2_Test3_Indicator    Test1_Test2_Test3
    ___________________________    _________________

               Test1                      93        
               Test2                      89        
               Test3                      95        
               Test1                      57        
               Test2                      77        
               Test3                      62        
               Test1                      87        
               Test2                      92        
               Test3                      89        
               Test1                      89        
               Test2                      86        
               Test3                      91        

S에는 12개의 행과 2개의 변수가 포함되어 있습니다. S는 누적된 형식입니다.

categorical형 변수 Test1_Test2_Test3_Indicator는 어떤 시험 점수가 누적된 데이터 변수 Test1_Test2_Test3에 대응하는지를 식별합니다.

5개 개별 폭풍으로 인한 3개 위치의 강설량을 나타내는 테이블을 만듭니다.

Storm = [1;2;3;4;5];
Date = {'12/25/11';'1/2/12';'1/23/12';'2/7/12';'2/15/12'};
Natick = [20;5;13;0;17];
Boston = [18;9;21;5;12];
Worcester = [26;10;16;3;15];

U = table(Storm,Date,Natick,Boston,Worcester)
U=5×5 table
    Storm       Date       Natick    Boston    Worcester
    _____    __________    ______    ______    _________

      1      '12/25/11'      20        18         26    
      2      '1/2/12'         5         9         10    
      3      '1/23/12'       13        21         16    
      4      '2/7/12'         0         5          3    
      5      '2/15/12'       17        12         15    

변수 StormDate에는 각 위치에서 일정한 데이터가 포함됩니다.

변수 Natick, Boston, Worcester를 단일 변수에 누적합니다. 누적된 데이터가 포함되는 변수 Snowfall에 이름을 지정하고 새 표시자 변수 Town에 이름을 지정합니다.

S = stack(U,{'Natick','Boston','Worcester'},...
    'NewDataVariableName','Snowfall',...
    'IndexVariableName','Town')
S=15×4 table
    Storm       Date         Town       Snowfall
    _____    __________    _________    ________

      1      '12/25/11'    Natick          20   
      1      '12/25/11'    Boston          18   
      1      '12/25/11'    Worcester       26   
      2      '1/2/12'      Natick           5   
      2      '1/2/12'      Boston           9   
      2      '1/2/12'      Worcester       10   
      3      '1/23/12'     Natick          13   
      3      '1/23/12'     Boston          21   
      3      '1/23/12'     Worcester       16   
      4      '2/7/12'      Natick           0   
      4      '2/7/12'      Boston           5   
      4      '2/7/12'      Worcester        3   
      5      '2/15/12'     Natick          17   
      5      '2/15/12'     Boston          12   
      5      '2/15/12'     Worcester       15   

S에는 각 폭풍에 대한 3개 행이 포함되어 있으며, stack은 그에 따라 상수 변수, StormDate에서 데이터를 반복합니다.

categorical형 변수 TownU의 어떤 변수가 이에 대응하는 Snowfall 데이터를 포함하는지 식별합니다.

미국의 동부 연안을 따라 추정된 인플루엔자 발생률을 포함하는 테이블을 만듭니다. 북동부, 미국 동부 연안, 남대서양 지역에 대한 각각의 변수를 만듭니다. 데이터 출처: Google Flu Trends(http://www.google.org/flutrends).

Month = {'October';'November';'December';...
    'January';'February';'March'};
Year = [2005*ones(3,1); 2006*ones(3,1)];
NE = [1.1902; 1.3610; 1.5003; 1.7772; 2.1350; 2.2345];
MidAtl = [1.1865; 1.4120; 1.6043; 1.8830; 2.1227; 1.9920];
SAtl = [1.2730; 1.5820; 1.8625; 1.9540; 2.4803; 2.0203];

fluU = table(Month,Year,NE,MidAtl,SAtl)
fluU=6×5 table
      Month       Year      NE      MidAtl     SAtl 
    __________    ____    ______    ______    ______

    'October'     2005    1.1902    1.1865     1.273
    'November'    2005     1.361     1.412     1.582
    'December'    2005    1.5003    1.6043    1.8625
    'January'     2006    1.7772     1.883     1.954
    'February'    2006     2.135    2.1227    2.4803
    'March'       2006    2.2345     1.992    2.0203

변수 MonthYear에는 행 전체에서 일정한 데이터가 포함됩니다.

변수 NE, MidAtl, SAtlFluRate라는 단일 변수에 누적합니다. 새 표시자 변수 Region에 이름을 지정하고 인덱스 벡터, ifluU를 출력하여 누적되지 않은 입력 테이블 fluU의 행과 누적된 출력 테이블, fluS 간의 대응 관계를 나타냅니다.

[fluS,ifluU] = stack(fluU,3:5,...
    'NewDataVariableName','FluRate',...
    'IndexVariableName','Region')
fluS=18×4 table
      Month       Year    Region    FluRate
    __________    ____    ______    _______

    'October'     2005    NE        1.1902 
    'October'     2005    MidAtl    1.1865 
    'October'     2005    SAtl       1.273 
    'November'    2005    NE         1.361 
    'November'    2005    MidAtl     1.412 
    'November'    2005    SAtl       1.582 
    'December'    2005    NE        1.5003 
    'December'    2005    MidAtl    1.6043 
    'December'    2005    SAtl      1.8625 
    'January'     2006    NE        1.7772 
    'January'     2006    MidAtl     1.883 
    'January'     2006    SAtl       1.954 
    'February'    2006    NE         2.135 
    'February'    2006    MidAtl    2.1227 
    'February'    2006    SAtl      2.4803 
    'March'       2006    NE        2.2345 
      ⋮

ifluU = 18×1

     1
     1
     1
     2
     2
     2
     3
     3
     3
     4
      ⋮

ifluU(5)2입니다. 출력 테이블의 다섯 번째 행 fluS에 입력 테이블 fluU의 두 번째 행의 데이터가 포함됩니다.

입력 인수

모두 축소

입력 테이블로, table형이나 timetable형으로 지정됩니다.

누적할 U의 변수로, 양의 정수, 양의 정수의 벡터, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 배열 또는 논리형 벡터로 지정됩니다.

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: 'NewDataVariableName','StackedData'는 새 데이터 변수 StackedData에 이름을 지정합니다.

vars 이외에 출력값에 포함시킬 변수로, 'ConstantVariables'와 함께 양의 정수, 양의 정수의 벡터, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 배열 또는 논리형 벡터가 쉼표로 구분되어 지정됩니다. stack은 한 행에서 각각의 누적된 요소에 대해 상수 변수의 데이터를 복제합니다.

디폴트 값은 vars에서 지정하지 않은 U의 모든 변수입니다. 'ConstantVariables' 이름-값 쌍의 인수를 사용하여 vars'ConstantVariables'에서 지정하지 않은 변수를 출력 테이블 S에서 제외시킬 수 있습니다.

U는 첫 번째 차원에서 행 레이블을 가질 수 있습니다. U가 테이블인 경우 행 이름을 레이블로 가질 수 있습니다. U가 타임테이블인 경우 행 시간값을 레이블로 가져야 합니다.

  • 'ConstantVariables'의 값을 지정할 때 행 이름이나 행 시간값을 포함시킬 수 있습니다.

  • 'ConstantVariables'에서 행 이름이나 행 시간값을 포함시키지 않아도 stack은 행 이름이나 행 시간값을 복제합니다.

S의 새 데이터 변수에 대한 이름으로, 'NewDataVariableName'과 함께 문자형 벡터 또는 string형 스칼라가 쉼표로 구분되어 지정됩니다. 디폴트 값은 U에서 누적되는 변수들의 이름을 결합한 것입니다.

S의 새 지시자 변수에 대한 이름으로, 'IndexVariableName'과 함께 문자형 벡터 또는 string형 스칼라가 쉼표로 구분되어 지정됩니다. 디폴트 값은 NewDataVariableName에 기반한 이름입니다.

출력 인수

모두 축소

누적된 테이블로, 테이블이나 타임테이블로 반환됩니다. S는 누적된 데이터 변수, categorical형 표시자 변수, 모든 상수 변수를 포함합니다.

설명, 변수 단위, 변수 이름, 행 이름과 같은 메타데이터를 추가로S에 저장할 수 있습니다. 자세한 내용은 table 또는 timetable 속성 설명을 참조하십시오.

stackvars에 나열된 첫 번째 변수에서 변수 단위 속성 값과 변수 설명 속성 값을 새 데이터 변수의 대응하는 S.Properties.VariableUnits 값과 S.Properties.VariableDescrisciptions 값에 할당합니다.

U에 대한 인덱스로, 열 벡터로 반환됩니다. 인덱스 벡터 iu는 입력 테이블 U에서 대응하는 데이터가 포함되는 행을 식별합니다. stackU(iu(j),vars)를 사용하여 출력 테이블 S에서 j번째 행을 만듭니다.

  • 사용자는 U에서 데이터 변수의 그룹을 2개 이상 지정할 수 있고, 각 그룹은 S에서 누적된 데이터 변수가 됩니다. vars에 대한 여러 개의 값을 포함하려면 셀형 배열을 사용하고, 'NewDataVariableName' 이름-값 쌍의 인수에 대한 여러 개의 값을 포함하려면 문자형 벡터로 구성된 셀형 배열 또는 string형 배열을 사용하십시오. 모든 그룹은 동일한 개수의 변수를 포함해야 합니다.

확장 기능

참고 항목

|

R2013b에 개발됨