findgroups

Найдите группы и возвратите числа группы

Описание

пример

G = findgroups(A) возвращает G, вектор чисел группы создается из сгруппированной переменной A. Выходной аргумент G содержит целочисленные значения от 1 до N, указание на N отличные группы для N уникальные значения в A. Например, если A {'b','a','a','b'}, затем findgroups возвращает G как [2 1 1 2]. Можно использовать G разделять группы данных из других переменных. Используйте G как входной параметр к splitapply в рабочем процессе "Разделение-Применение-Объединение".

findgroups пустые символьные вектора обработок и NaNNAT, и неопределенные категориальные значения в A как отсутствующие значения и возвращает NaN как соответствующие элементы G.

пример

G = findgroups(A1,...,AN) создает числа группы из A1,...,AN. findgroups функция задает группы как уникальные комбинации значений через A1,...,AN. Например, если A1 {'a','a','b','b'} и A2 [0 1 0 0], затем findgroups(A1,A2) возвращает G как [1 2 3 3], потому что комбинация 'b' 0 происходит дважды.

пример

[G,ID] = findgroups(A) также возвращает уникальные значения для каждой группы в ID. Например, если A {'b','a','a','b'}, затем findgroups возвращает G как [2 1 1 2] и ID как {'a','b'}. Аргументы A и ID совпадающий тип данных, но не должен быть одного размера.

пример

[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 и ID2 как {'a','a','b'} и [0 1 0].

пример

G = findgroups(T) возвращает G, вектор чисел группы создается из переменных в таблице T. findgroups функционируйте обрабатывает все переменные в T как сгруппированные переменные.

пример

[G,TID] = findgroups(T) также возвращает TID, таблица, которая содержит уникальные значения для каждой группы. TID содержит уникальные комбинации значений через переменные T. Переменные в T и TID имейте те же имена, но таблицы не должны иметь одинакового числа строк.

Примеры

свернуть все

Используйте числа группы, чтобы разделить терпеливые измерения высоты в группы полом. Затем вычислите среднюю высоту для каждой группы.

Загрузите терпеливые высоты и полы из файла данных patients.mat.

load patients
whos Gender Height
  Name          Size            Bytes  Class     Attributes

  Gender      100x1             12212  cell                
  Height      100x1               800  double              

Задайте группы полом с findgroups.

G = findgroups(Gender);

Сравните первые пять элементов Gender и G. Где Gender содержит 'Female'G содержит 1. Где Gender содержит 'Male'G содержит 2.

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

G(1:5)
ans = 5×1

     2
     2
     1
     1
     1

Разделите Height переменная в две группы высот с помощью G. Примените 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               

Задайте группы, использующие пол и курящие информацию о пациентах. G содержит целые числа от один до четыре, потому что существует четыре возможных комбинации значений от Smoker и Gender.

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.

Загрузите показания кровяного давления, пол и курение данных для 100 пациентов из файла данных 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               

Задайте группы, использующие пол и курящие информацию о пациентах. Вычислите среднее кровяное давление для каждой группы. Значения через выходные аргументы gender и smoker задайте группы что 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 

Задайте группы пациентов, использующих Gender и Smoker переменные в T.

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);

Задайте группы пациентов, использующих Gender и Smoker переменные в T. Выходная таблица 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    

Входные параметры

свернуть все

Сгруппированная переменная, заданная как вектор, массив ячеек из символьных векторов или массив строк. Уникальные значения в A идентифицируйте группы.

Если A вектор, затем это может быть числовым или типа данных categoricalcalendarDurationdatetimeдлительностьлогический, или string.

Сгруппированные переменные, заданные как таблица. findgroups обработки каждая табличная переменная как отдельная сгруппированная переменная. Переменные могут быть числовыми или типа данных categoricalcalendarDurationdatetimeдлительностьлогический, или string.

Выходные аргументы

свернуть все

Числа группы, возвращенные как вектор положительных целых чисел. Для N группы идентифицированы в сгруппированных переменных, каждом целом числе между 1 и N задает группу. G содержит NaN где любая сгруппированная переменная содержит пустой символьный вектор или NaNNAT, или неопределенное категориальное значение.

  • Если сгруппированные переменные являются векторами, то G и сгруппированные переменные все одного размера.

  • Если сгруппированные переменные находятся в таблице, длине G равно количеству строк таблицы.

Значения, которые идентифицируют каждую группу, возвратились как вектор или массив ячеек из символьных векторов. Значения ID отсортированные уникальные значения A.

Уникальные значения, которые идентифицируют каждую группу, возвратились как таблица. Переменные TID имейте отсортированные уникальные значения от соответствующих переменных T. Однако TID и T не должен иметь одинакового числа строк.

Больше о

свернуть все

Рабочий процесс "разделение применяет объединение

Рабочий процесс "Разделение-Применение-Объединение" распространен в анализе данных. В этом рабочем процессе аналитик разделяет данные в группы, применяет функцию к каждой группе и комбинирует результаты. Схема показывает типичный пример рабочего процесса и части рабочего процесса, реализованного findgroups и splitapply.

Расширенные возможности

Введенный в R2015b