테이블에 행 추가나 삭제하기
이 예제에서는 테이블에서 행을 추가하거나 삭제하는 방법을 보여줍니다. 변수 편집기를 사용하여 테이블을 편집할 수도 있습니다.
샘플 데이터 불러오기
샘플 환자 데이터를 불러오고 테이블 T
를 생성합니다.
load patients
T = table(LastName,Gender,Age,Height,Weight,Smoker,Systolic,Diastolic);
size(T)
ans = 1×2
100 8
테이블 T
에는 100개 행과 8개 변수가 있습니다.
결합을 통해 행 추가하기
쉼표로 구분된 파일 morePatients.csv
에서 테이블 T2
로 추가 환자에 대한 데이터를 읽어옵니다. 그런 다음, 테이블 T의 끝에 T2
의 행을 추가합니다.
T2 = readtable('morePatients.csv');
Tnew = [T;T2];
size(Tnew)
ans = 1×2
104 8
테이블 Tnew
에는 104개 행이 있습니다. 두 개의 테이블을 세로로 결합하려면 두 테이블의 변수 개수와 변수 이름이 동일해야 합니다. 변수 이름이 서로 다를 경우 테이블의 새 행을 다른 테이블의 행에 직접 할당할 수 있습니다. 예를 들면 T(end+1:end+4,:) = T2
와 같습니다.
셀형 배열의 행을 추가하기
셀형 배열에 저장된 행을 새 행으로 추가하려면 테이블의 끝에 셀형 배열을 세로로 결합하십시오. 셀형 배열에 적절한 개수의 열이 있는 경우 셀형 배열로부터 직접 결합할 수 있으며, 해당 셀의 내용을 대응되는 테이블 변수로 결합할 수 있습니다.
cellPatients = {'Trujillo','Male',42,70,158,0,116,83; 'Falk','Female',28,62,125,1,120,71}; Tnew = [Tnew;cellPatients]; size(Tnew)
ans = 1×2
106 8
cell2table
함수를 사용하여 셀형 배열을 테이블로 변환할 수도 있습니다.
구조체의 행을 추가하기
구조체에 저장된 행을 새 행으로 추가할 수도 있습니다. 구조체를 테이블로 변환한 후 테이블을 서로 결합합니다.
structPatients(1,1).LastName = 'George'; structPatients(1,1).Gender = 'Nonbinary'; structPatients(1,1).Age = 45; structPatients(1,1).Height = 76; structPatients(1,1).Weight = 182; structPatients(1,1).Smoker = 1; structPatients(1,1).Systolic = 132; structPatients(1,1).Diastolic = 85; structPatients(2,1).LastName = 'Russo'; structPatients(2,1).Gender = 'Female'; structPatients(2,1).Age = 29; structPatients(2,1).Height = 58; structPatients(2,1).Weight = 120; structPatients(2,1).Smoker = 0; structPatients(2,1).Systolic = 112; structPatients(2,1).Diastolic = 70; Tnew = [Tnew;struct2table(structPatients)]; size(Tnew)
ans = 1×2
108 8
중복된 행 생략하기
테이블에서 중복된 행을 모두 생략하려면 unique
함수를 사용하십시오.
Tnew = unique(Tnew); size(Tnew)
ans = 1×2
107 8
unique
가 두 개의 중복 행을 삭제했습니다.
행 번호를 기준으로 행 삭제
테이블에서 행 18, 20, 21을 삭제합니다.
Tnew([18,20,21],:) = []; size(Tnew)
ans = 1×2
104 8
이제, 테이블에 103명의 환자에 대한 정보가 있습니다.
행 이름을 기준으로 행 삭제하기
우선, 식별자 변수 LastName
을 행 이름으로 지정합니다. 그런 다음, 변수 LastName
을 Tnew
에서 삭제합니다. 마지막으로, 행 이름을 사용하여 인덱싱하고 행을 삭제합니다.
Tnew.Properties.RowNames = Tnew.LastName;
Tnew.LastName = [];
Tnew('Smith',:) = [];
size(Tnew)
ans = 1×2
103 7
이제 테이블에서 행과 변수의 개수가 각각 하나씩 줄어듭니다.
삭제할 행 검색하기
테이블에서 관측값을 검색할 수도 있습니다. 예를 들어, 30세 미만의 모든 환자에 대한 행을 삭제해 보겠습니다.
toDelete = Tnew.Age < 30; Tnew(toDelete,:) = []; size(Tnew)
ans = 1×2
86 7
이제 테이블에서 행의 개수가 17개 줄어듭니다.
참고 항목
table
| readtable
| array2table
| cell2table
| struct2table