이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
stack
입력 테이블/타임테이블의 데이터를 출력 테이블/타임테이블의 변수 하나에 쌓기
설명
는 입력 테이블/타임테이블 S = stack(U,vars)U를 누적 테이블/타임테이블 S로 변환합니다. 함수는 U의 여러 변수에서 가져온 값을 S의 변수 하나에 누적합니다. 입력 인수 vars는 U에 있는 변수의 이름이나 위치를 기준으로 U의 어느 변수를 누적할지 지정합니다.
U에 행이 n개 있고 vars가 U의 m개 변수를 지정하는 경우 S는 m*n개 행을 갖습니다. stack 함수는 U에 지정한 변수들의 값을 차례차례 결합해 S에 하나의 변수로 만듭니다. 예를 들어, U에 행이 10개 있고 U의 변수 3개를 누적할 경우, S에 30개 행이 생깁니다. 일반적으로, S는 U보다 변수 개수가 적지만, 행 개수는 더 많습니다.
출력값인 테이블 또는 타임테이블 S에는 S에 누적된 각 행의 데이터가 U의 어느 변수에서 왔는지를 나타내는 새로운 categorical형 변수가 있습니다. stack 함수는 U의 누적하지 않은 변수의 데이터는 그대로 복제합니다.
U가 테이블인 경우 행 이름은 누적할 수 없습니다.U가 타임테이블인 경우 행 시간값은 누적할 수 없습니다.
은 S = stack(U,{vars1,...,varsN}){vars1,...,varsN}으로 지정된 변수의 값을 S의 N개 변수에 누적합니다. 자세한 내용은 출력값에 여러 개의 누적 변수 만들기 항목을 참조하십시오.
는 하나 이상의 이름-값 인수를 추가 옵션으로 지정하여 테이블 S = stack(___,Name,Value)U를 변환합니다.
예를 들어, S의 새 누적 변수의 이름을 지정할 수 있습니다.
예제
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에 대응하는지를 식별합니다.
다섯 번의 폭풍으로 인한 세 도시의 강설량을 나타내는 타임테이블을 만듭니다. 폭풍의 날짜를 datetime형 값으로 지정하여 타임테이블 U의 행 시간값으로 사용합니다. 이 타임테이블에는 폭풍 번호가 모두 고정되어 있으므로 폭풍 번호인 Storm의 배열을 categorical형 배열로 지정합니다.
Storm = categorical([1;2;3;4;5]);
Date = datetime({'2011-12-25';'2012-01-02';'2012-01-23';'2012-02-07';'2012-02-15'});
Natick = [20;5;13;0;17];
Boston = [18;9;21;5;12];
Worcester = [26;10;16;3;15];
U = timetable(Date,Storm,Natick,Boston,Worcester)U=5×4 timetable
Date Storm Natick Boston Worcester
___________ _____ ______ ______ _________
25-Dec-2011 1 20 18 26
02-Jan-2012 2 5 9 10
23-Jan-2012 3 13 21 16
07-Feb-2012 4 0 5 3
15-Feb-2012 5 17 12 15
변수 Storm과 Date에는 각 지역에서 볼 때 상수인 데이터가 포함됩니다.
변수 Natick, Boston, Worcester를 하나의 변수에 누적합니다. 누적 데이터를 포함할 변수 Snowfall과 새 표시 변수 Town에 이름을 지정합니다.
S = stack(U,{'Natick','Boston','Worcester'},...
'NewDataVariableName','Snowfall',...
'IndexVariableName','Town')S=15×3 timetable
Date Storm Town Snowfall
___________ _____ _________ ________
25-Dec-2011 1 Natick 20
25-Dec-2011 1 Boston 18
25-Dec-2011 1 Worcester 26
02-Jan-2012 2 Natick 5
02-Jan-2012 2 Boston 9
02-Jan-2012 2 Worcester 10
23-Jan-2012 3 Natick 13
23-Jan-2012 3 Boston 21
23-Jan-2012 3 Worcester 16
07-Feb-2012 4 Natick 0
07-Feb-2012 4 Boston 5
07-Feb-2012 4 Worcester 3
15-Feb-2012 5 Natick 17
15-Feb-2012 5 Boston 12
15-Feb-2012 5 Worcester 15
S에는 각 폭풍에 대한 3개 행이 포함되며, 이에 맞춰 stack은 상수 변수인 Storm과 Date의 데이터를 반복해 삽입합니다.
categorical형 변수 Town은 U의 어떤 변수가 이에 대응하는 Snowfall 데이터를 포함하는지 식별합니다.
미국의 동부 연안을 따라 추정된 월별 인플루엔자 발생률을 포함하는 타임테이블을 만듭니다. 북동부, 미국 동부 연안, 남대서양 지역에 대한 각각의 변수를 만듭니다. 데이터 소스: Google Flu Trends 프로젝트(중단됨). datetime 배열을 타임테이블의 행 시간값으로 사용합니다.
Month = datetime(2005,10,1,'Format','MMMM yyyy') + calmonths(0:5); Month = Month'; 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 = timetable(Month,NE,MidAtl,SAtl)
fluU=6×3 timetable
Month 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
변수 Month에는 각 행에서 상수인 데이터가 포함됩니다.
변수 NE, MidAtl, SAtl을 FluRate라는 단일 변수에 누적합니다. 새 표시 변수 Region에 이름을 지정하고 인덱스 벡터 ifluU를 출력하여 누적되지 않은 입력 테이블 fluU의 행과 누적된 출력 테이블 fluS 간의 대응 관계를 표시합니다.
[fluS,ifluU] = stack(fluU,1:3,... 'NewDataVariableName','FluRate',... 'IndexVariableName','Region')
fluS=18×2 timetable
Month 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의 두 번째 행의 데이터가 포함됩니다.
입력 인수
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.
예: 'NewDataVariableName','StackedData'는 새 데이터 변수 StackedData에 이름을 지정합니다.
vars 이외에 출력값에 포함시킬 변수로, 'ConstantVariables'와 함께 양의 정수, 양의 정수로 구성된 벡터, string형 배열, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, pattern 스칼라 또는 논리형 벡터가 쉼표로 구분되어 지정됩니다. 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 속성 설명을 참조하십시오.
stack은 vars에 나열된 첫 번째 변수에서 변수 단위 속성값과 변수 설명 속성값을 새 데이터 변수의 대응하는 S.Properties.VariableUnits 값과 S.Properties.VariableDescrisciptions 값에 할당합니다.
U에 대한 인덱스로, 열 벡터로 반환됩니다. 인덱스 벡터 iu는 대응하는 데이터가 포함된 입력 테이블 U의 행을 식별합니다. stack은 U(iu(j),vars)를 사용하여 출력 테이블 S에서 j번째 행을 만듭니다.
알고리즘
입력값을 출력값의 여러 변수에 쌓을 수 있습니다.
S에 누적 변수를 여러 개 만들려면 셀형 배열을 사용하여U로부터 변수 그룹을 여러 개 지정하십시오.vars에 대한 여러 개의 값을 포함하려면 셀형 배열을 사용하고,'NewDataVariableName'이름-값 쌍의 인수에 대한 여러 개의 값을 포함하려면 문자형 벡터로 구성된 셀형 배열 또는 string형 배열을 사용하십시오. 모든 그룹은 동일한 개수의 변수를 포함해야 합니다.예를 들어,
U에 4개의 변수가 있으면 다음 구문을 사용하여S에 하나가 아닌 두 개의 누적 변수를 만들 수 있습니다.vars = {[1 2],[3 4]}; S = stack(U,vars)그 결과,
S는U의 첫 번째 변수와 두 번째 변수의 값이 누적된 변수, 그리고U의 세 번째 변수와 네 번째 변수의 값이 누적된 또 다른 변수를 갖습니다.S에 새 변수 이름을 지정하려면'NewDataVariableName'을 사용하십시오. 지정하는 이름의 개수는vars에 지정된 그룹 개수와 같아야 합니다.vars = {[1 2],[3 4]}; S = stack(U,vars,'NewDataVariableName',{'Vars1And2','Vars3And4'})vars를 문자형 벡터로 구성된 셀형 배열로 지정하는 경우S는 하나의 누적 변수를 포함합니다. 변수 이름을 사용하면서 여러 개의 누적 변수를 지정하려면 문자형 벡터의 셀형 배열로 구성된 셀형 배열 또는 string형 배열로 구성된 셀형 배열을 사용하십시오.예를 들어, 다음 구문은
U가Var1,Var2,Var3,Var4변수를 갖는 테이블일 때S에 하나의 누적 변수를 만듭니다.S = stack(U,{'Var1','Var2','Var3','Var4'})다음 구문은
S에 두 개의 누적 변수를 만듭니다.S = stack(U,{{'Var1','Var2'} {'Var3','Var4'}})
확장 기능
stack 함수는 tall형 배열을 완전히 지원합니다. 자세한 내용은 tall형 배열 항목을 참조하십시오.
사용법 관련 참고 및 제한 사항:
두 번째 입력 인수
vars는 상수여야 합니다.'ConstantVariables','NewDataVariableName','IndexVariableName'이름-값 인수의 값은 상수여야 합니다.vars입력 인수와'ConstantVariables'이름-값 인수의 값은 패턴 표현식을 지원하지 않습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2013b에 개발됨
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)