Main Content

findgroups

그룹을 찾고 그룹 번호 반환

설명

데이터를 그룹으로 분할하고 이 그룹에 함수를 적용하려면 findgroups 함수와 splitapply 함수를 함께 사용하십시오. 데이터 그룹 계산에 대한 자세한 내용은 데이터 그룹에 대한 계산 항목을 참조하십시오.

예제

G = findgroups(A)는 그룹화 변수 A에서 생성된 그룹 번호의 벡터 G를 반환합니다. 출력 인수 G는 1부터 N까지의 정수 값을 포함하고 있으며 A에 있는 N개의 고유한 값에 대해 N개의 고유 그룹이 있음을 나타냅니다. 예를 들어, A["b","a","a","b"]인 경우 findgroupsG[2 1 1 2]로 반환합니다.

G를 사용하여 다른 변수에서 나온 데이터 그룹을 분할하려면 이를 splitapply 함수에 대한 입력 인수로 전달합니다.

findgroups 함수는 A에 있는 빈 문자형 벡터와 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 Smoker Weight
  Name          Size            Bytes  Class      Attributes

  Smoker      100x1               100  logical              
  Weight      100x1               800  double               

findgroups를 사용하여 그룹을 지정합니다. G의 각 요소는 환자가 속한 그룹을 지정하는 그룹 번호입니다. 그룹 1은 비흡연자를 포함하고 그룹 2는 흡연자를 포함합니다.

G = findgroups(Smoker)
G = 100×1

     2
     1
     1
     1
     1
     1
     2
     1
     1
     1
      ⋮

환자의 체중을 표시합니다.

Weight
Weight = 100×1

   176
   163
   131
   133
   119
   142
   142
   180
   183
   132
      ⋮

G를 사용하여 Weight 배열을 두 개의 체중 그룹으로 분할합니다. mean 함수를 적용합니다. 비흡연자의 평균 체중은 흡연자의 평균 체중보다 약간 적습니다.

meanWeights = splitapply(@mean,Weight,G)
meanWeights = 2×1

  149.9091
  161.9412

환자 그룹의 평균 체중을 계산합니다. 이 경우, 환자를 흡연 여부(흡연자 또는 비흡연자)와 진료를 받은 병원을 기준으로 그룹화합니다. 데이터 세트에 3개의 병원이 있으므로 6개의 환자 그룹이 있습니다.

샘플 파일 patients.mat에서 환자의 병원 위치, 흡연 여부, 체중을 불러옵니다.

load patients
whos Location Smoker Weight
  Name            Size            Bytes  Class      Attributes

  Location      100x1             14208  cell                 
  Smoker        100x1               100  logical              
  Weight        100x1               800  double               

Location 배열과 Smoker 배열을 표시합니다.

Location
Location = 100x1 cell
    {'County General Hospital'  }
    {'VA Hospital'              }
    {'St. Mary's Medical Center'}
    {'VA Hospital'              }
    {'County General Hospital'  }
    {'St. Mary's Medical Center'}
    {'VA Hospital'              }
    {'VA Hospital'              }
    {'St. Mary's Medical Center'}
    {'County General Hospital'  }
    {'County General Hospital'  }
    {'St. Mary's Medical Center'}
    {'VA Hospital'              }
    {'VA Hospital'              }
    {'St. Mary's Medical Center'}
    {'VA Hospital'              }
    {'St. Mary's Medical Center'}
    {'VA Hospital'              }
    {'County General Hospital'  }
    {'County General Hospital'  }
    {'VA Hospital'              }
    {'VA Hospital'              }
    {'VA Hospital'              }
    {'County General Hospital'  }
    {'County General Hospital'  }
    {'VA Hospital'              }
    {'VA Hospital'              }
    {'County General Hospital'  }
    {'County General Hospital'  }
    {'County General Hospital'  }
      ⋮

Smoker
Smoker = 100x1 logical array

   1
   0
   0
   0
   0
   0
   1
   0
   0
   0
      ⋮

병원 위치와 흡연 여부를 사용하여 그룹을 지정합니다. SmokerLocation 간에 가능한 조합이 6개이므로 G는 1에서 6까지의 정수를 포함합니다.

G = findgroups(Location,Smoker)
G = 100×1

     2
     5
     3
     5
     1
     3
     6
     5
     3
     1
      ⋮

각 그룹의 평균 체중을 계산합니다. 흡연 여부에 따른 차이보다는 병원 위치에 따른 차이가 더 적습니다.

meanWeights = splitapply(@mean,Weight,G)
meanWeights = 6×1

  150.1739
  159.8125
  146.8947
  158.4000
  152.0417
  165.9231

환자 그룹의 평균 체중을 계산하고 그 결과를 테이블에 표시합니다. 평균 체중을 그룹 ID와 연결하려면 findgroups의 두 번째 출력 인수를 사용합니다.

샘플 파일 patients.mat에서 환자의 체중과 흡연 여부를 불러옵니다.

load patients
whos Smoker Weight
  Name          Size            Bytes  Class      Attributes

  Smoker      100x1               100  logical              
  Weight      100x1               800  double               

findgroups를 사용하여 그룹을 지정합니다. 출력 인수 ID의 값은 findgroups가 그룹화 변수로 식별하는 그룹에 대한 레이블입니다.

[G,ID] = findgroups(Smoker)
G = 100×1

     2
     1
     1
     1
     1
     1
     2
     1
     1
     1
      ⋮

ID = 2x1 logical array

   0
   1

평균 체중을 계산합니다. 평균 체중이 포함된 테이블을 생성합니다.

meanWeight = splitapply(@mean,Weight,G);
T = table(ID,meanWeight,'VariableNames',["Smokers","Mean Weights"])
T=2×2 table
    Smokers    Mean Weights
    _______    ____________

     false        149.91   
     true         161.94   

환자 그룹의 평균 체중을 계산하고 그 결과를 테이블에 표시합니다. 이 경우, 환자를 흡연 여부(흡연자 또는 비흡연자)와 진료를 받은 병원을 기준으로 그룹화합니다.

샘플 파일 patients.mat에서 환자의 병원 위치, 흡연 여부, 체중을 불러옵니다.

load patients
whos Location Smoker Weight
  Name            Size            Bytes  Class      Attributes

  Location      100x1             14208  cell                 
  Smoker        100x1               100  logical              
  Weight        100x1               800  double               

Location을 string형 배열로 변환합니다. 그런 다음 병원 위치와 흡연 여부를 사용하여 그룹을 지정합니다. 두 개의 그룹화 변수를 입력값으로 지정하므로 두 개의 그룹 ID를 추가 출력값으로 지정할 수 있습니다. 병원 위치와 흡연 여부의 가능한 조합은 6개입니다. ID1ID2를 함께 사용하여 6개 그룹에 대한 ID를 제공합니다.

Location = string(Location);
[G,ID1,ID2] = findgroups(Location,Smoker)
G = 100×1

     2
     5
     3
     5
     1
     3
     6
     5
     3
     1
      ⋮

ID1 = 6x1 string
    "County General Hospital"
    "County General Hospital"
    "St. Mary's Medical Center"
    "St. Mary's Medical Center"
    "VA Hospital"
    "VA Hospital"

ID2 = 6x1 logical array

   0
   1
   0
   1
   0
   1

각 그룹의 평균 체중을 계산합니다.

meanWeights = splitapply(@mean,Weight,G)
meanWeights = 6×1

  150.1739
  159.8125
  146.8947
  158.4000
  152.0417
  165.9231

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

T = table(ID1,ID2,meanWeights,'VariableNames',["Hospital","Smoker","Mean Weight"])
T=6×3 table
             Hospital              Smoker    Mean Weight
    ___________________________    ______    ___________

    "County General Hospital"      false       150.17   
    "County General Hospital"      true        159.81   
    "St. Mary's Medical Center"    false       146.89   
    "St. Mary's Medical Center"    true         158.4   
    "VA Hospital"                  false       152.04   
    "VA Hospital"                  true        165.92   

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

환자 100명에 대한 병원 위치와 흡연 여부를 테이블에 불러옵니다.

load patients
T = table(Location,Smoker)
T=100×2 table
              Location               Smoker
    _____________________________    ______

    {'County General Hospital'  }    true  
    {'VA Hospital'              }    false 
    {'St. Mary's Medical Center'}    false 
    {'VA Hospital'              }    false 
    {'County General Hospital'  }    false 
    {'St. Mary's Medical Center'}    false 
    {'VA Hospital'              }    true  
    {'VA Hospital'              }    false 
    {'St. Mary's Medical Center'}    false 
    {'County General Hospital'  }    false 
    {'County General Hospital'  }    false 
    {'St. Mary's Medical Center'}    false 
    {'VA Hospital'              }    false 
    {'VA Hospital'              }    true  
    {'St. Mary's Medical Center'}    false 
    {'VA Hospital'              }    true  
      ⋮

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

G = findgroups(T)
G = 100×1

     2
     5
     3
     5
     1
     3
     6
     5
     3
     1
      ⋮

데이터 배열 Weight의 평균 체중을 계산합니다.

meanWeights = splitapply(@mean,Weight,G)
meanWeights = 6×1

  150.1739
  159.8125
  146.8947
  158.4000
  152.0417
  165.9231

병원 위치와 흡연자, 비흡연자 여부를 기준으로 그룹화된 환자의 평균 체중 테이블을 생성합니다.

환자에 대한 병원 위치와 흡연 여부를 테이블에 불러옵니다. Location을 string형 배열로 변환합니다.

load patients
Location = string(Location);
T = table(Location,Smoker)
T=100×2 table
             Location              Smoker
    ___________________________    ______

    "County General Hospital"      true  
    "VA Hospital"                  false 
    "St. Mary's Medical Center"    false 
    "VA Hospital"                  false 
    "County General Hospital"      false 
    "St. Mary's Medical Center"    false 
    "VA Hospital"                  true  
    "VA Hospital"                  false 
    "St. Mary's Medical Center"    false 
    "County General Hospital"      false 
    "County General Hospital"      false 
    "St. Mary's Medical Center"    false 
    "VA Hospital"                  false 
    "VA Hospital"                  true  
    "St. Mary's Medical Center"    false 
    "VA Hospital"                  true  
      ⋮

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

[G,TID] = findgroups(T);
TID
TID=6×2 table
             Location              Smoker
    ___________________________    ______

    "County General Hospital"      false 
    "County General Hospital"      true  
    "St. Mary's Medical Center"    false 
    "St. Mary's Medical Center"    true  
    "VA Hospital"                  false 
    "VA Hospital"                  true  

데이터 배열 Weight의 평균 체중을 계산합니다. 평균 체중을 TID에 추가합니다.

TID.meanWeight = splitapply(@mean,Weight,G)
TID=6×3 table
             Location              Smoker    meanWeight
    ___________________________    ______    __________

    "County General Hospital"      false       150.17  
    "County General Hospital"      true        159.81  
    "St. Mary's Medical Center"    false       146.89  
    "St. Mary's Medical Center"    true         158.4  
    "VA Hospital"                  false       152.04  
    "VA Hospital"                  true        165.92  

입력 인수

모두 축소

그룹화 변수로, 벡터로 지정됩니다. A의 고유한 값이 그룹으로 식별됩니다. 다음 표에 나열된 데이터형을 사용하여 그룹화 변수를 지정할 수 있습니다.

그룹을 지정하는 값

그룹화 변수의 데이터형

숫자

숫자형 벡터 또는 논리형 벡터

텍스트

string형 배열, 또는 문자형 벡터로 구성된 셀형 배열

날짜/시간

datetime형 벡터, duration형 벡터 또는 calendarDuration형 벡터

범주

categorical형 벡터

Bin

숫자형 값, datetime형 값 또는 duration형 값의 연속 분포를 비닝하여 생성된 비닝된 값으로 구성된 벡터

그룹화 변수로, 테이블로 지정됩니다. findgroups는 각 테이블 변수를 별도의 그룹화 변수로 취급합니다.

테이블 변수는 숫자형 벡터, 논리형 벡터, string형 벡터, categorical형 벡터, datetime형 벡터, duration형 벡터, calendarDuration형 벡터, 또는 문자형 벡터로 구성된 셀형 배열일 수 있습니다.

출력 인수

모두 축소

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

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

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

각 그룹을 식별하는 값으로, 입력 인수 A의 정렬된 고유한 값으로 구성된 벡터로 반환됩니다. ID의 데이터형은 A의 데이터형과 같습니다.

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

세부 정보

모두 축소

데이터 그룹에 대한 계산

데이터 분석에서는 일반적으로 데이터 그룹에 대한 계산을 수행합니다. 이러한 계산의 경우 하나 이상의 데이터 변수를 데이터 그룹으로 분할하고, 각 그룹에 대해 계산을 수행하고, 결과를 하나 이상의 출력 변수로 조합합니다. 하나 이상의 그룹화 변수를 사용하여 그룹을 지정할 수 있습니다. 그룹화 변수의 고유 값은 데이터 변수의 대응값이 속하는 그룹을 정의합니다.

예를 들어, 다음 도식은 6×1 숫자형 벡터를 두 개의 데이터 그룹으로 분할하고 각 그룹의 평균을 계산한 다음 출력값을 2×1 숫자형 벡터로 조합하는 그룹화된 간단한 계산을 보여줍니다. 6×1 그룹화 변수에는 두 개의 고유한 값 ABXYZ가 있습니다.

Calculation that splits a data variable based on a grouping variable, performs calculations on individual groups of data by applying the same function, and then concatenates the outputs of those function calls

숫자, 텍스트, 날짜/시간, 범주 또는 Bin이 포함된 그룹화 변수를 지정할 수 있습니다.

확장 기능

버전 내역

R2015b에 개발됨