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

findgroups

그룹을 찾고 그룹 번호 반환

구문

G = findgroups(A)
G = findgroups(A1,...,AN)
[G,ID] = findgroups(A)
[G,ID1,...,IDN] = findgroups(A1,...,AN)
G = findgroups(T)
[G,TID] = findgroups(T)

설명

예제

G = findgroups(A)는 그룹화 변수 A에서 생성된 그룹 번호의 벡터 G를 반환합니다. 출력 인수 G는 1부터 N까지의 정수 값을 포함하고 있으며 A에 있는 N개의 고유한 값에 대해 N개의 고유 그룹이 있음을 나타냅니다. 예를 들어, A{'b','a','a','b'}인 경우 findgroupsG[2 1 1 2]로 반환합니다. G를 사용하여 다른 변수에서 나온 데이터 그룹을 분할할 수 있습니다. 분할-적용-재조합 워크플로(Split-Apply-Combine Workflow)에서 Gsplitapply에 대한 입력 인수로 사용하십시오.

findgroupsA에 있는 빈 문자형 벡터와 NaN, NaT, 정의되지 않은 categorical형 값을 누락된 값으로 취급하고 대응하는 G의 요소로 NaN을 반환합니다.

예제

G = findgroups(A1,...,AN)A1,...,AN에서 그룹 번호를 생성합니다. findgroups 함수는 A1,...,AN 값들의 고유한 조합 각각을 개별 그룹으로 정의합니다. 예를 들어 A1{'a','a','b','b'}이고 A2[0 1 0 0]인 경우 조합 'b' 0이 두 번 발생하기 때문에 findgroups(A1,A2)G[1 2 3 3]으로 반환합니다.

예제

[G,ID] = findgroups(A)는 각 그룹의 고유한 값을 ID에 반환합니다. 예를 들어, A{'b','a','a','b'}인 경우 findgroupsG[2 1 1 2]로 반환하고 ID{'a','b'}로 반환합니다. 인수 AID는 동일한 데이터형이지만 크기가 같을 필요는 없습니다.

예제

[G,ID1,...,IDN] = findgroups(A1,...,AN)은 각 그룹의 고유한 값을 ID1,...,IDN으로 반환합니다. ID1,...,IDN 값은 고유한 개별 그룹을 정의합니다. 예를 들어, A1{'a','a','b','b'}이고 A2[0 1 0 0]인 경우, findgroups(A1,A2)G[1 2 3 3]으로 반환하고 ID1{'a','a','b'}로 반환하고 ID2[0 1 0]으로 반환합니다.

예제

G = findgroups(T)는 표 T의 변수에서 생성된 그룹 번호의 벡터 G를 반환합니다. findgroups 함수는 T의 모든 변수를 그룹화 변수로 취급합니다.

예제

[G,TID] = findgroups(T)는 개별 그룹의 고유한 값이 포함된 테이블 TID를 반환합니다. TID에는 T의 변수 값들의 고유한 조합이 포함됩니다. 두 테이블 TTID에 포함되는 변수 이름은 같지만, 행 개수는 다를 수 있습니다.

예제

모두 축소

그룹 번호를 사용하여 환자의 키 측정값을 성별에 따라 그룹으로 나눕니다. 그런 다음 각 그룹의 평균 키를 계산합니다.

데이터 파일 patients.mat에서 환자의 키와 성별을 불러옵니다.

load patients
whos Gender Height
  Name          Size            Bytes  Class     Attributes

  Gender      100x1             12212  cell                
  Height      100x1               800  double              

findgroups를 사용하여 성별에 따라 그룹을 지정합니다.

G = findgroups(Gender);

GenderG의 처음 5개 요소를 비교합니다. Gender'Female'이 포함되어 있으면, G1이 포함됩니다. Gender'Male'이 포함되어 있으면, G2가 포함됩니다.

Gender(1:5)
ans = 5x1 cell array
    {'Male'  }
    {'Male'  }
    {'Female'}
    {'Female'}
    {'Female'}

G(1:5)
ans = 5×1

     2
     2
     1
     1
     1

G를 사용하여 Height 변수를 두 개의 키 그룹으로 분할합니다. mean 함수를 적용합니다. 그룹에 각각 여성 환자와 남성 환자의 평균 키가 포함됩니다.

splitapply(@mean,Height,G)
ans = 2×1

   65.1509
   69.2340

측정값에서 성별과 흡연자 여부를 기준으로 그룹화된 환자 그룹의 평균 혈압을 계산합니다.

데이터 파일 patients.mat에서 환자에 대한 혈압 측정값, 성별, 흡연 여부 데이터를 불러옵니다.

load patients
whos Systolic Diastolic Gender Smoker
  Name             Size            Bytes  Class      Attributes

  Diastolic      100x1               800  double               
  Gender         100x1             12212  cell                 
  Smoker         100x1               100  logical              
  Systolic       100x1               800  double               

환자에 대한 성별 및 흡연 여부 정보를 사용하여 그룹을 지정합니다. SmokerGender 간에 가능한 조합이 4개이므로 G는 1에서 4까지의 정수를 포함합니다.

G = findgroups(Smoker,Gender);
G(1:10)
ans = 10×1

     4
     2
     1
     1
     1
     1
     3
     2
     2
     1

각 그룹의 평균 혈압을 계산합니다.

meanSystolic = splitapply(@mean,Systolic,G);
meanDiastolic = splitapply(@mean,Diastolic,G);
mBP = [meanSystolic,meanDiastolic]
mBP = 4×2

  119.4250   79.0500
  119.3462   79.8846
  129.0000   89.2308
  129.5714   90.3333

환자 그룹의 키 중앙값을 계산하고 그 결과를 테이블에 표시합니다. 환자 그룹을 정의하기 위해 findgroups에 추가 출력 인수를 사용합니다.

데이터 파일 patients.mat에서 환자의 키와 성별을 불러옵니다.

load patients
whos Gender Height
  Name          Size            Bytes  Class     Attributes

  Gender      100x1             12212  cell                
  Height      100x1               800  double              

findgroups를 사용하여 성별에 따라 그룹을 지정합니다. 출력 인수 gender의 값은 findgroups가 그룹화 변수로 식별하는 그룹을 정의합니다.

[G,gender] = findgroups(Gender);

키 중앙값을 계산합니다. 키 중앙값이 포함된 테이블을 생성합니다.

medianHeight = splitapply(@median,Height,G);
T = table(gender,medianHeight)
T=2×2 table
     gender     medianHeight
    ________    ____________

    'Female'         65     
    'Male'           69     

환자 그룹의 평균 혈압을 계산하고 그 결과를 테이블에 표시합니다. 환자 그룹을 정의하기 위해 findgroups에 추가 출력 인수를 사용합니다.

데이터 파일 patients.mat에서 환자 100명에 대한 혈압 측정값, 성별, 흡연 여부 데이터를 불러옵니다.

load patients
whos Systolic Diastolic Gender Smoker
  Name             Size            Bytes  Class      Attributes

  Diastolic      100x1               800  double               
  Gender         100x1             12212  cell                 
  Smoker         100x1               100  logical              
  Systolic       100x1               800  double               

환자에 대한 성별 및 흡연 여부 정보를 사용하여 그룹을 지정합니다. 각 그룹의 평균 혈압을 계산합니다. 출력 인수 gendersmoker 값은 findgroups가 그룹화 변수로 식별하는 그룹을 정의합니다.

[G,gender,smoker] = findgroups(Gender,Smoker);
meanSystolic = splitapply(@mean,Systolic,G);
meanDiastolic = splitapply(@mean,Diastolic,G);

각 환자 그룹의 평균 혈압이 포함된 테이블을 생성합니다.

T = table(gender,smoker,meanSystolic,meanDiastolic)
T=4×4 table
     gender     smoker    meanSystolic    meanDiastolic
    ________    ______    ____________    _____________

    'Female'    false        119.42           79.05    
    'Female'    true            129          89.231    
    'Male'      false        119.35          79.885    
    'Male'      true         129.57          90.333    

테이블에 있는 그룹화 변수를 사용하여 환자의 평균 혈압을 계산합니다.

환자 100명에 대한 성별 데이터와 흡연 여부 데이터를 테이블에 불러옵니다.

load patients
T = table(Gender,Smoker);
T(1:5,:)
ans=5×2 table
     Gender     Smoker
    ________    ______

    'Male'      true  
    'Male'      false 
    'Female'    false 
    'Female'    false 
    'Female'    false 

TGender 변수와 Smoker 변수를 사용하여 환자 그룹을 지정합니다.

G = findgroups(T);

데이터 변수 Systolic(심장 수축기)과 Diastolic(심장 확장기)에서 평균 혈압을 계산합니다.

meanSystolic = splitapply(@mean,Systolic,G);
meanDiastolic = splitapply(@mean,Diastolic,G);
mBP = [meanSystolic,meanDiastolic]
mBP = 4×2

  119.4250   79.0500
  129.0000   89.2308
  119.3462   79.8846
  129.5714   90.3333

성별과 흡연자, 비흡연자 여부를 기준으로 그룹화된 환자의 평균 혈압 테이블을 생성합니다.

환자에 대한 성별 데이터와 흡연 여부 데이터를 테이블에 불러옵니다.

load patients
T = table(Gender,Smoker);

TGender 변수와 Smoker 변수를 사용하여 환자 그룹을 지정합니다. 출력 테이블 TID가 그룹을 식별합니다.

[G,TID] = findgroups(T);
TID
TID=4×2 table
     Gender     Smoker
    ________    ______

    'Female'    false 
    'Female'    true  
    'Male'      false 
    'Male'      true  

데이터 변수 Systolic(심장 수축기)과 Diastolic(심장 확장기)에서 평균 혈압을 계산합니다. 평균 혈압을 TID에 추가합니다.

TID.meanSystolic = splitapply(@mean,Systolic,G);
TID.meanDiastolic = splitapply(@mean,Diastolic,G)
TID=4×4 table
     Gender     Smoker    meanSystolic    meanDiastolic
    ________    ______    ____________    _____________

    'Female'    false        119.42           79.05    
    'Female'    true            129          89.231    
    'Male'      false        119.35          79.885    
    'Male'      true         129.57          90.333    

입력 인수

모두 축소

그룹화 변수로, 벡터, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열로 지정됩니다. A의 고유한 값이 그룹으로 식별됩니다.

A가 벡터인 경우 숫자형이거나 데이터형 categorical, calendarDuration, datetime, duration, logical 또는 string일 수 있습니다.

그룹화 변수로, 테이블로 지정됩니다. findgroups는 각 테이블 변수를 별도의 그룹화 변수로 취급합니다. 변수는 숫자형이거나 데이터형 categorical, calendarDuration, datetime, duration, logical 또는 string일 수 있습니다.

출력 인수

모두 축소

그룹 번호로, 양의 정수의 벡터로 반환됩니다. N개의 그룹이 그룹화 변수로 식별되면 1과 N 사이의 모든 정수가 그룹을 지정하게 됩니다. 그룹화 변수에 빈 문자형 벡터나 NaN, NaT, 정의되지 않은 categorical형 값이 있으면 G에는 대응값으로 NaN이 포함됩니다.

  • 그룹화 변수가 벡터인 경우 G와 그룹화 변수는 모두 크기가 같습니다.

  • 그룹화 변수가 테이블에 있는 경우 G의 길이는 테이블의 행의 개수와 같습니다.

각 그룹을 식별하는 값으로, 벡터 또는 문자형 벡터로 구성된 셀형 배열로 반환됩니다. ID의 값은 A의 정렬된 고유한 값입니다.

각 그룹을 식별하는 고유한 값으로, 테이블로 반환됩니다. TID의 변수는 T의 대응하는 변수로부터 정렬된 고유한 값을 갖습니다. 그러나 TIDT에 있는 행의 개수가 같을 필요는 없습니다.

세부 정보

모두 축소

분할-적용-재조합 워크플로(Split-Apply-Combine Workflow)

분할-적용-재조합 워크플로는 데이터 분석에 일반적으로 사용됩니다. 이 워크플로에서 분석가는 데이터를 여러 그룹으로 분할하고 각 그룹에 함수를 적용한 후 그 결과를 결합합니다. 다음 도식은 이 워크플로의 일반적인 예를 제시하고 findgroupssplitapply로 구현되는 워크플로의 일부를 보여 줍니다.

확장 기능

R2015b에 개발됨