테이블 변수 추가, 삭제 및 재배열하기
이 예제에서는 테이블에서 열 방향 변수를 추가, 삭제 및 재배열하는 방법을 보여줍니다. addvars
함수, movevars
함수, removevars
함수를 사용하여 테이블 변수를 추가, 이동 및 삭제할 수 있습니다. 또는 점 구문을 사용하거나 테이블의 요소를 참조하여 테이블 변수를 수정할 수도 있습니다. 복수의 열을 갖는 변수를 분할하고 여러 변수를 하나로 결합하려면 splitvars
함수와 mergevars
함수를 사용합니다. 마지막으로 테이블의 행이 출력 테이블의 변수가 되도록 rows2vars
함수를 사용하여 테이블의 방향을 변경할 수 있습니다.
변수 편집기를 사용하여 테이블 변수를 변경할 수도 있습니다.
샘플 데이터 불러오기 및 테이블 생성하기
MAT 파일 patients
에서 샘플 데이터로 구성된 배열을 불러옵니다. 작업 공간으로 불러온 변수의 이름과 크기를 표시해 보겠습니다.
load patients whos -file patients
Name Size Bytes Class Attributes Age 100x1 800 double Diastolic 100x1 800 double Gender 100x1 11412 cell Height 100x1 800 double LastName 100x1 11616 cell Location 100x1 14208 cell SelfAssessedHealthStatus 100x1 11540 cell Smoker 100x1 100 logical Systolic 100x1 800 double Weight 100x1 800 double
테이블을 2개 만듭니다. 환자 질문서에서 수집한 정보를 사용하여 하나의 테이블 T
를 생성하고, 환자로부터 측정한 데이터를 사용하여 다른 테이블 T2
를 생성합니다. 각 테이블에는 100개 행이 있습니다.
T = table(Age,SelfAssessedHealthStatus,Smoker); T.SelfAssessedHealthStatus = string(T.SelfAssessedHealthStatus); T2 = table(Height,Weight,Systolic,Diastolic);
각 테이블에서 처음 5개 행을 표시합니다.
head(T,5)
Age SelfAssessedHealthStatus Smoker ___ ________________________ ______ 38 "Excellent" true 43 "Fair" false 38 "Good" false 40 "Fair" false 49 "Good" false
head(T2,5)
Height Weight Systolic Diastolic ______ ______ ________ _________ 71 176 124 93 69 163 109 77 64 131 125 83 67 133 117 75 64 119 122 80
다른 테이블과 결합한 변수 추가하기
T2
와 가로로 결합하여 테이블 T
에 변수를 추가합니다.
T = [T T2];
T
의 처음 5개 행을 표시합니다.
head(T,5)
Age SelfAssessedHealthStatus Smoker Height Weight Systolic Diastolic ___ ________________________ ______ ______ ______ ________ _________ 38 "Excellent" true 71 176 124 93 43 "Fair" false 69 163 109 77 38 "Good" false 64 131 125 83 40 "Fair" false 67 133 117 75 49 "Good" false 64 119 122 80
이제 테이블 T
에 7개 변수와 100개 행이 있습니다.
가로로 결합할 테이블에 행 이름이 있는 경우 horzcat
은 행 이름을 일치시켜 테이블을 결합합니다. 따라서, 테이블은 동일한 행 이름을 사용해야 합니다. 그러나, 행 순서는 상관없습니다.
작업 공간의 변수를 테이블에 추가하기
작업 공간 변수 LastName
의 환자 이름을 T
의 첫 번째 테이블 변수 앞에 추가합니다. 새로운 위치 근처에 있는 변수의 이름을 사용하여 테이블에서 어느 위치든 지정할 수 있습니다. 따옴표를 사용하여 테이블 변수의 이름을 참조하십시오. 하지만 작업 공간 변수인 입력 인수에는 따옴표를 사용하지 마십시오.
T = addvars(T,LastName,'Before',"Age"); T.LastName = string(T.LastName); head(T,5)
LastName Age SelfAssessedHealthStatus Smoker Height Weight Systolic Diastolic __________ ___ ________________________ ______ ______ ______ ________ _________ "Smith" 38 "Excellent" true 71 176 124 93 "Johnson" 43 "Fair" false 69 163 109 77 "Williams" 38 "Good" false 64 131 125 83 "Jones" 40 "Fair" false 67 133 117 75 "Brown" 49 "Good" false 64 119 122 80
숫자를 사용하여 테이블에서 위치를 지정할 수도 있습니다. 예를 들어, 위의 예와 동일한 위치를 지정하는 숫자를 사용한 구문은 T = addvars(T,LastName,'Before',1)
입니다.
점 구문을 사용하여 변수 추가하기
새로운 변수를 추가하는 또 다른 방법은 점 구문을 사용하는 것입니다. 점 구문을 사용하면 항상 새로운 변수를 테이블의 마지막 변수로 추가합니다. 변수에 테이블과 동일한 개수의 행이 있는 한, 어떠한 데이터형의 변수도 추가할 수 있습니다.
두 개의 변수 Systolic
과 Diastolic
을 가로 결합하여 혈압을 나타내는 새 변수를 생성합니다. 변수를 T
에 추가합니다.
T.BloodPressure = [Systolic Diastolic]; head(T,5)
LastName Age SelfAssessedHealthStatus Smoker Height Weight Systolic Diastolic BloodPressure __________ ___ ________________________ ______ ______ ______ ________ _________ _____________ "Smith" 38 "Excellent" true 71 176 124 93 124 93 "Johnson" 43 "Fair" false 69 163 109 77 109 77 "Williams" 38 "Good" false 64 131 125 83 125 83 "Jones" 40 "Fair" false 67 133 117 75 117 75 "Brown" 49 "Good" false 64 119 122 80 122 80
이제 T
에 9개 변수와 100개 행이 있습니다. 테이블 변수는 열을 여러 개 가질 수 있습니다. 따라서 BloodPressure
에 2개의 열이 있어도 이것은 하나의 테이블 변수입니다.
테이블 T
에 새 변수 BMI
를 추가하여 각 환자의 BMI(체질량지수)를 포함합니다. BMI
는 키와 체중을 나타내는 함수입니다. BMI
를 계산할 때 T
에 있는 Weight
변수와 Height
변수를 참조할 수 있습니다.
T.BMI = (T.Weight*0.453592)./(T.Height*0.0254).^2;
BMI
계산에 사용되는 연산자 ./
와 .^
은 각각 요소별 나눗셈과 지수(거듭제곱)를 나타냅니다.
테이블 T
에서 처음 5개 행을 표시합니다.
head(T,5)
LastName Age SelfAssessedHealthStatus Smoker Height Weight Systolic Diastolic BloodPressure BMI __________ ___ ________________________ ______ ______ ______ ________ _________ _____________ ______ "Smith" 38 "Excellent" true 71 176 124 93 124 93 24.547 "Johnson" 43 "Fair" false 69 163 109 77 109 77 24.071 "Williams" 38 "Good" false 64 131 125 83 125 83 22.486 "Jones" 40 "Fair" false 67 133 117 75 117 75 20.831 "Brown" 49 "Good" false 64 119 122 80 122 80 20.426
테이블에서 변수 이동하기
movevars
함수를 사용하여 테이블 변수 BMI
가 변수 Weight
다음에 오도록 위치를 이동할 수 있습니다. 이름으로 테이블 변수를 지정할 때는 따옴표를 사용합니다.
T = movevars(T,"BMI",'After',"Weight"); head(T,5)
LastName Age SelfAssessedHealthStatus Smoker Height Weight BMI Systolic Diastolic BloodPressure __________ ___ ________________________ ______ ______ ______ ______ ________ _________ _____________ "Smith" 38 "Excellent" true 71 176 24.547 124 93 124 93 "Johnson" 43 "Fair" false 69 163 24.071 109 77 109 77 "Williams" 38 "Good" false 64 131 22.486 125 83 125 83 "Jones" 40 "Fair" false 67 133 20.831 117 75 117 75 "Brown" 49 "Good" false 64 119 20.426 122 80 122 80
숫자를 사용하여 테이블에서 위치를 지정할 수도 있습니다. 예를 들어, 위의 예와 동일한 위치를 지정하는 숫자를 사용한 구문은 T = movevars(T,"BMI",'After',6)
입니다. 대개는 이름으로 변수를 참조하는 것이 더 편리합니다.
인덱싱을 사용하여 테이블 변수 이동하기
또는 인덱싱을 사용하여 테이블 변수를 이동할 수도 있습니다. 행렬의 요소를 참조할 때와 동일한 구문을 사용하여 테이블의 요소를 참조할 수 있습니다.
BloodPressure
가 BMI
다음에 오도록 위치를 이동합니다.
T = T(:,[1:7 10 8 9]); head(T,5)
LastName Age SelfAssessedHealthStatus Smoker Height Weight BMI BloodPressure Systolic Diastolic __________ ___ ________________________ ______ ______ ______ ______ _____________ ________ _________ "Smith" 38 "Excellent" true 71 176 24.547 124 93 124 93 "Johnson" 43 "Fair" false 69 163 24.071 109 77 109 77 "Williams" 38 "Good" false 64 131 22.486 125 83 125 83 "Jones" 40 "Fair" false 67 133 20.831 117 75 117 75 "Brown" 49 "Good" false 64 119 20.426 122 80 122 80
변수가 많은 테이블에서는 보통 movevars
함수를 사용하는 것이 더 편리합니다.
변수 삭제하기
테이블 변수를 삭제하려면 removevars
함수를 사용하십시오. Systolic
테이블 변수와 Diastolic
테이블 변수를 삭제해 보겠습니다.
T = removevars(T,["Systolic","Diastolic"]); head(T,5)
LastName Age SelfAssessedHealthStatus Smoker Height Weight BMI BloodPressure __________ ___ ________________________ ______ ______ ______ ______ _____________ "Smith" 38 "Excellent" true 71 176 24.547 124 93 "Johnson" 43 "Fair" false 69 163 24.071 109 77 "Williams" 38 "Good" false 64 131 22.486 125 83 "Jones" 40 "Fair" false 67 133 20.831 117 75 "Brown" 49 "Good" false 64 119 20.426 122 80
점 구문을 사용하여 변수 삭제하기
또는 점 구문과 빈 행렬 []
을 사용하여 변수를 삭제할 수 있습니다. 테이블에서 Age
변수를 제거해 보겠습니다.
T.Age = []; head(T,5)
LastName SelfAssessedHealthStatus Smoker Height Weight BMI BloodPressure __________ ________________________ ______ ______ ______ ______ _____________ "Smith" "Excellent" true 71 176 24.547 124 93 "Johnson" "Fair" false 69 163 24.071 109 77 "Williams" "Good" false 64 131 22.486 125 83 "Jones" "Fair" false 67 133 20.831 117 75 "Brown" "Good" false 64 119 20.426 122 80
인덱싱을 사용하여 변수 삭제하기
인덱싱과 빈 행렬 []
을 사용하여 변수를 삭제할 수도 있습니다. 테이블에서 SelfAssessedHealthStatus
변수를 제거해 보겠습니다.
T(:,"SelfAssessedHealthStatus") = [];
head(T,5)
LastName Smoker Height Weight BMI BloodPressure __________ ______ ______ ______ ______ _____________ "Smith" true 71 176 24.547 124 93 "Johnson" false 69 163 24.071 109 77 "Williams" false 64 131 22.486 125 83 "Jones" false 67 133 20.831 117 75 "Brown" false 64 119 20.426 122 80
테이블 변수 분할 및 병합하기
복수의 열을 갖는 테이블 변수를 열이 1개인 변수로 분할하려면 splitvars
함수를 사용하십시오. 변수 BloodPressure
를 2개의 변수로 분할해 보겠습니다.
T = splitvars(T,"BloodPressure",'NewVariableNames',["Systolic","Diastolic"]); head(T,5)
LastName Smoker Height Weight BMI Systolic Diastolic __________ ______ ______ ______ ______ ________ _________ "Smith" true 71 176 24.547 124 93 "Johnson" false 69 163 24.071 109 77 "Williams" false 64 131 22.486 125 83 "Jones" false 67 133 20.831 117 75 "Brown" false 64 119 20.426 122 80
마찬가지로, mergevars
함수를 사용하여 서로 관련 있는 테이블 변수를 1개의 변수로 묶을 수 있습니다. Systolic
과 Diastolic
을 다시 1개의 변수로 결합한 후 이름을 BP
로 지정해 보겠습니다.
T = mergevars(T,["Systolic","Diastolic"],'NewVariableName',"BP"); head(T,5)
LastName Smoker Height Weight BMI BP __________ ______ ______ ______ ______ __________ "Smith" true 71 176 24.547 124 93 "Johnson" false 69 163 24.071 109 77 "Williams" false 64 131 22.486 125 83 "Jones" false 67 133 20.831 117 75 "Brown" false 64 119 20.426 122 80
변수가 될 수 있도록 행의 방향 변경하기
테이블 또는 타임테이블의 행이 출력 테이블의 변수가 되도록 rows2vars
함수를 사용하여 행의 방향을 변경할 수 있습니다. 하지만 테이블에 복수의 열을 갖는 변수가 있으면 이 변수를 분할해야만 rows2vars
함수를 호출할 수 있습니다.
T
에 있는 행의 방향을 변경해 보겠습니다. T
에 있는 환자 이름이 출력 테이블에서 테이블 변수 이름이 되도록 지정합니다. T3
의 첫 번째 변수에는 T
의 변수 이름이 포함됩니다. T3
의 나머지 변수에는 각각 T
의 해당 행에 있는 데이터가 포함됩니다.
T = splitvars(T,"BP",'NewVariableNames',["Systolic","Diastolic"]); T3 = rows2vars(T,'VariableNamesSource',"LastName"); T3(:,1:5)
ans=6×5 table
OriginalVariableNames Smith Johnson Williams Jones
_____________________ ______ _______ ________ ______
{'Smoker' } 1 0 0 0
{'Height' } 71 69 64 67
{'Weight' } 176 163 131 133
{'BMI' } 24.547 24.071 22.486 20.831
{'Systolic' } 124 109 125 117
{'Diastolic'} 93 77 83 75
T3
에 점 구문을 사용하여 환자 데이터에 배열로 액세스할 수 있습니다. 하지만 입력 테이블의 행 값을 결합할 수 없으면 출력 테이블의 변수는 셀형 배열이 됩니다.
T3.Smith
ans = 6×1
1.0000
71.0000
176.0000
24.5467
124.0000
93.0000
참고 항목
table
| addvars
| movevars
| removevars
| splitvars
| mergevars
| inner2outer
| rows2vars