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
,{vars
1,...,vars
N}){vars1,...,varsN}
으로 지정된 변수의 값을 S
의 N
개 변수에 누적합니다. 자세한 내용은 출력값에 여러 개의 누적 변수 만들기 항목을 참조하십시오.
는 하나 이상의 이름-값 인수를 추가 옵션으로 지정하여 테이블 S
= stack(___,Name,Value
)U
를 변환합니다.
예를 들어, S
의 새 누적 변수의 이름을 지정할 수 있습니다.
예제
3개 변수를 하나로 누적하기
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
의 두 번째 행의 데이터가 포함됩니다.
입력 인수
U
— 입력 테이블
테이블 | 타임테이블
입력 테이블로, table형이나 timetable형으로 지정됩니다.
vars
— 누적할 U
의 변수
양의 정수 | 양의 정수로 구성된 벡터 | string형 배열 | 문자형 벡터 | 문자형 벡터로 구성된 셀형 배열 | pattern
형 스칼라 | 논리형 벡터
누적할 U
의 변수로, 양의 정수, 양의 정수로 구성된 벡터, string형 배열, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열 또는 pattern
스칼라로 지정됩니다.
예: S = stack(U,1:4)
는 U
의 처음 4개 변수를 S
의 변수 하나에 누적합니다.
예: S = stack(U,{'Var1',Var3','Var5'})
는 이름이 Var1
, Var3
, Var5
인 U
의 변수들을 누적합니다.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: 'NewDataVariableName','StackedData'
는 새 데이터 변수 StackedData
에 이름을 지정합니다.
ConstantVariables
— vars
이외에 출력값에 포함시킬 변수
양의 정수 | 양의 정수로 구성된 벡터 | string형 배열 | 문자형 벡터 | 문자형 벡터로 구성된 셀형 배열 | pattern
형 스칼라 | 논리형 벡터
vars
이외에 출력값에 포함시킬 변수로, 'ConstantVariables'
와 함께 양의 정수, 양의 정수로 구성된 벡터, string형 배열, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, pattern
스칼라 또는 논리형 벡터가 쉼표로 구분되어 지정됩니다. stack
은 같은 행에서 가져온, 각각의 누적 요소에 대응하는 상수 변수의 데이터를 복제합니다.
디폴트 값은 vars
에서 지정하지 않은 U
의 모든 변수입니다. 'ConstantVariables'
이름-값 쌍의 인수를 사용하여 vars
나 'ConstantVariables'
에서 지정하지 않은 변수를 출력 테이블 S
에서 제외시킬 수 있습니다.
U
는 첫 번째 차원에서 행 레이블을 가질 수 있습니다. U
가 테이블인 경우 행 이름을 레이블로 가질 수 있습니다. U
가 타임테이블인 경우 행 시간값을 레이블로 가져야 합니다.
'ConstantVariables'
의 값을 지정할 때 행 이름이나 행 시간값을 포함시킬 수 있습니다.'ConstantVariables'
에 행 이름이나 행 시간값을 포함시키지 않아도stack
은 행 이름이나 행 시간값을 복제합니다.
NewDataVariableName
— S
의 새 데이터 변수 이름
문자형 벡터 | string형 배열 | 문자형 벡터로 구성된 셀형 배열
S
의 새 데이터 변수에 대한 이름으로, 'NewDataVariableName'
과 함께 문자형 벡터, string형 배열 또는 문자형 벡터로 구성된 셀형 배열이 쉼표로 구분되어 지정됩니다. 디폴트 값은 누적할 U
의 변수들의 이름을 결합한 것입니다.
IndexVariableName
— S
의 새 표시 변수 이름
문자형 벡터 | string형 스칼라
S
의 새 표시 변수에 대한 이름으로, 'IndexVariableName'
과 함께 문자형 벡터 또는 string형 스칼라가 쉼표로 구분되어 지정됩니다. 디폴트 값은 NewDataVariableName
에 기반한 이름입니다.
출력 인수
S
— 출력 테이블
테이블 | 타임테이블
누적 테이블로, 테이블이나 타임테이블로 반환됩니다. S
는 누적 데이터 변수, categorical형 표시 변수, 모든 상수 변수를 포함합니다.
설명, 변수 단위, 변수 이름, 행 이름과 같은 메타데이터를 추가로 S
에 저장할 수 있습니다. 자세한 내용은 table
또는 timetable
속성 설명을 참조하십시오.
stack
은 vars
에 나열된 첫 번째 변수에서 변수 단위 속성값과 변수 설명 속성값을 새 데이터 변수의 대응하는 S.Properties.VariableUnits
값과 S.Properties.VariableDescrisciptions
값에 할당합니다.
iu
— U
에 대한 인덱스
열 벡터
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'}})
확장 기능
tall형 배열
메모리에 담을 수 없을 정도로 많은 행을 가진 배열을 계산할 수 있습니다.
사용법 관련 참고 및 제한 사항:
vars
입력 인수와'ConstantVariables'
이름-값 인수의 값은 패턴 표현식을 지원하지 않습니다.
자세한 내용은 tall형 배열 항목을 참조하십시오.
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
두 번째 입력 인수
vars
는 상수여야 합니다.'ConstantVariables'
,'NewDataVariableName'
,'IndexVariableName'
이름-값 인수의 값은 상수여야 합니다.vars
입력 인수와'ConstantVariables'
이름-값 인수의 값은 패턴 표현식을 지원하지 않습니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2013b에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)