그룹별 계산
설명
그룹별 계산 작업을 사용하면 대화형 방식으로 데이터를 그룹화하고 요약 통계량을 계산하고 변환을 수행하고 각 그룹에 필터를 적용할 수 있습니다. 이 작업은 라이브 스크립트의 MATLAB® 코드를 자동으로 생성합니다.
이 작업을 사용하여 다음을 수행할 수 있습니다.
배열, 테이블 또는 타임테이블의 데이터 그룹을 정의합니다.
각 그룹화를 기반으로 데이터를 요약, 변환 또는 필터링합니다
계산 결과를 포함한 새 테이블 또는 타임테이블을 출력합니다.
자세히
관련 함수
그룹별 계산은 groupsummary
함수, grouptransform
함수, groupfilter
함수를 사용하는 코드를 생성합니다.
작업 열기
MATLAB 편집기의 라이브 스크립트에 그룹별 계산 작업을 추가하려면 다음을 수행하십시오.
라이브 편집기 탭에서 작업 > 그룹별 계산을 선택합니다.
스크립트의 코드 블록에 관련 키워드를 입력합니다(예:
group
). 제안된 명령 완성 항목에서그룹별 계산
을 선택합니다.
예제
그룹별 통계량 계산하기
데이터를 대화형 방식으로 그룹화하고, 연산을 수행할 변수를 지정하고, 라이브 편집기에서 그룹별 계산 작업을 통해 통계량을 계산하여 데이터를 요약합니다.
샘플 파일 outages.csv
를 사용하여 타임테이블을 만듭니다. 파일에는 정전 기록을 나타내는 6개 열의 데이터가 포함되어 있습니다. Region
과 Cause
열 방향 변수를 categorical형 배열로 변환하고 타임테이블을 표시합니다.
outages = readtimetable("outages.csv");
outages.Region = categorical(outages.Region);
outages.Cause = categorical(outages.Cause)
outages=1468×5 timetable
OutageTime Region Loss Customers RestorationTime Cause
________________ _________ ______ __________ ________________ _______________
2002-02-01 12:18 SouthWest 458.98 1.8202e+06 2002-02-07 16:50 winter storm
2003-01-23 00:49 SouthEast 530.14 2.1204e+05 NaT winter storm
2003-02-07 21:15 SouthEast 289.4 1.4294e+05 2003-02-17 08:14 winter storm
2004-04-06 05:44 West 434.81 3.4037e+05 2004-04-06 06:10 equipment fault
2002-03-16 06:18 MidWest 186.44 2.1275e+05 2002-03-18 23:23 severe storm
2003-06-18 02:49 West 0 0 2003-06-18 10:54 attack
2004-06-20 14:39 West 231.29 NaN 2004-06-20 19:16 equipment fault
2002-06-06 19:28 West 311.86 NaN 2002-06-07 00:51 equipment fault
2003-07-16 16:23 NorthEast 239.93 49434 2003-07-17 01:12 fire
2004-09-27 11:09 MidWest 286.72 66104 2004-09-27 16:37 equipment fault
2004-09-05 17:48 SouthEast 73.387 36073 2004-09-05 20:46 equipment fault
2004-05-21 21:45 West 159.99 NaN 2004-05-22 04:23 equipment fault
2002-09-01 18:22 SouthEast 95.917 36759 2002-09-01 19:12 severe storm
2003-09-27 07:32 SouthEast NaN 3.5517e+05 2003-10-04 07:02 severe storm
2003-11-12 06:12 West 254.09 9.2429e+05 2003-11-17 02:04 winter storm
2004-09-18 05:54 NorthEast 0 0 NaT equipment fault
⋮
라이브 편집기에서 그룹별 계산 작업을 엽니다. 정전이 발생한 5개 지역을 기준으로 데이터를 그룹화하려면 입력 데이터로 outages
를 선택하고 Region
변수의 고유한 값을 기준으로 그룹화합니다. 그런 다음 계산 대상 필드에서 모든 숫자형 변수를 선택하여 Loss
와 Customers
변수에 대해 계산합니다.
그룹별 계산 작업에서는 그룹에 대해 세 가지 다른 유형의 계산을 수행할 수 있습니다. 정전 데이터를 요약하려면 계산 유형을 그룹별 통계량 계산으로 설정합니다. 그런 다음 숫자형 변수 Loss
와 Customers
의 평균과 최댓값을 계산하기 위해 그룹별 계산 필드를 사용하여 평균과 최댓값 방법을 선택합니다.
결과 타임테이블에는 각 지역의 정전에 대한 그룹 관측값 개수, 평균 전력 손실, 최대 전력 손실, 영향을 받는 평균 고객 수, 영향을 받는 최대 고객 수가 포함됩니다.
outageStats=5×6 table
Region GroupCount mean_Loss max_Loss mean_Customers max_Customers
_________ __________ _________ ________ ______________ _____________
MidWest 142 1137.7 23141 2.4015e+05 3.972e+06
NorthEast 557 551.65 23418 1.4917e+05 5.9689e+06
SouthEast 389 495.35 8767.3 1.6776e+05 2.2249e+06
SouthWest 26 493.88 2796 2.6975e+05 1.8202e+06
West 354 433.37 16659 1.5201e+05 4.26e+06
그룹별 변환
데이터를 대화형 방식으로 그룹화하고, 연산을 수행할 변수를 지정하고, 라이브 편집기에서 그룹별 계산 작업을 통해 변환 작업을 적용하여 데이터의 해석 가능성 또는 모양을 개선합니다.
샘플 파일 outages.csv
를 사용하여 타임테이블을 만듭니다. 파일에는 정전 기록을 나타내는 6개 열의 데이터가 포함되어 있습니다. Region
과 Cause
열 방향 변수를 categorical형 배열로 변환하고 타임테이블을 표시합니다.
outages = readtimetable("outages.csv");
outages.Region = categorical(outages.Region);
outages.Cause = categorical(outages.Cause)
outages=1468×5 timetable
OutageTime Region Loss Customers RestorationTime Cause
________________ _________ ______ __________ ________________ _______________
2002-02-01 12:18 SouthWest 458.98 1.8202e+06 2002-02-07 16:50 winter storm
2003-01-23 00:49 SouthEast 530.14 2.1204e+05 NaT winter storm
2003-02-07 21:15 SouthEast 289.4 1.4294e+05 2003-02-17 08:14 winter storm
2004-04-06 05:44 West 434.81 3.4037e+05 2004-04-06 06:10 equipment fault
2002-03-16 06:18 MidWest 186.44 2.1275e+05 2002-03-18 23:23 severe storm
2003-06-18 02:49 West 0 0 2003-06-18 10:54 attack
2004-06-20 14:39 West 231.29 NaN 2004-06-20 19:16 equipment fault
2002-06-06 19:28 West 311.86 NaN 2002-06-07 00:51 equipment fault
2003-07-16 16:23 NorthEast 239.93 49434 2003-07-17 01:12 fire
2004-09-27 11:09 MidWest 286.72 66104 2004-09-27 16:37 equipment fault
2004-09-05 17:48 SouthEast 73.387 36073 2004-09-05 20:46 equipment fault
2004-05-21 21:45 West 159.99 NaN 2004-05-22 04:23 equipment fault
2002-09-01 18:22 SouthEast 95.917 36759 2002-09-01 19:12 severe storm
2003-09-27 07:32 SouthEast NaN 3.5517e+05 2003-10-04 07:02 severe storm
2003-11-12 06:12 West 254.09 9.2429e+05 2003-11-17 02:04 winter storm
2004-09-18 05:54 NorthEast 0 0 NaT equipment fault
⋮
라이브 편집기에서 그룹별 계산 작업을 엽니다. 정전이 발생한 10가지 원인을 기준으로 데이터를 그룹화하려면 입력 데이터로 outages
를 선택하고 Cause
변수의 고유한 값을 기준으로 그룹화합니다. 그런 다음 계산 대상을 Loss
변수로 설정합니다.
그룹별 계산 작업에서는 그룹에 대해 세 가지 다른 유형의 계산을 수행할 수 있습니다. 정전 데이터를 변환하려면 계산 유형을 그룹별 변환으로 설정합니다. 그런 다음 누락된 전력 손실 값을 채우기 위해 그룹별 계산을 그룹 평균으로 누락값 채우기 방법으로 설정합니다.
결과 타임테이블에는 누락된 전력 손실이 동일한 원인으로 발생한 정전의 평균 전력 손실로 대체된 정전 데이터가 포함됩니다.
outageTransform=1468×5 timetable
OutageTime Region Loss Customers RestorationTime Cause
________________ _________ ______ __________ ________________ _______________
2002-02-01 12:18 SouthWest 458.98 1.8202e+06 2002-02-07 16:50 winter storm
2003-01-23 00:49 SouthEast 530.14 2.1204e+05 NaT winter storm
2003-02-07 21:15 SouthEast 289.4 1.4294e+05 2003-02-17 08:14 winter storm
2004-04-06 05:44 West 434.81 3.4037e+05 2004-04-06 06:10 equipment fault
2002-03-16 06:18 MidWest 186.44 2.1275e+05 2002-03-18 23:23 severe storm
2003-06-18 02:49 West 0 0 2003-06-18 10:54 attack
2004-06-20 14:39 West 231.29 NaN 2004-06-20 19:16 equipment fault
2002-06-06 19:28 West 311.86 NaN 2002-06-07 00:51 equipment fault
2003-07-16 16:23 NorthEast 239.93 49434 2003-07-17 01:12 fire
2004-09-27 11:09 MidWest 286.72 66104 2004-09-27 16:37 equipment fault
2004-09-05 17:48 SouthEast 73.387 36073 2004-09-05 20:46 equipment fault
2004-05-21 21:45 West 159.99 NaN 2004-05-22 04:23 equipment fault
2002-09-01 18:22 SouthEast 95.917 36759 2002-09-01 19:12 severe storm
2003-09-27 07:32 SouthEast 697.41 3.5517e+05 2003-10-04 07:02 severe storm
2003-11-12 06:12 West 254.09 9.2429e+05 2003-11-17 02:04 winter storm
2004-09-18 05:54 NorthEast 0 0 NaT equipment fault
⋮
그룹별 필터링
데이터를 대화형 방식으로 그룹화하고, 연산을 수행할 변수를 지정하고, 그룹별 계산을 통해 그룹 필터를 적용하여 데이터 세트의 특정 정보에 중점을 둡니다.
샘플 파일 outages.csv
를 사용하여 타임테이블을 만듭니다. 파일에는 정전 기록을 나타내는 6개 열의 데이터가 포함되어 있습니다. Region
과 Cause
열 방향 변수를 categorical형 배열로 변환하고 타임테이블을 표시합니다.
outages = readtimetable("outages.csv");
outages.Region = categorical(outages.Region);
outages.Cause = categorical(outages.Cause)
outages=1468×5 timetable
OutageTime Region Loss Customers RestorationTime Cause
________________ _________ ______ __________ ________________ _______________
2002-02-01 12:18 SouthWest 458.98 1.8202e+06 2002-02-07 16:50 winter storm
2003-01-23 00:49 SouthEast 530.14 2.1204e+05 NaT winter storm
2003-02-07 21:15 SouthEast 289.4 1.4294e+05 2003-02-17 08:14 winter storm
2004-04-06 05:44 West 434.81 3.4037e+05 2004-04-06 06:10 equipment fault
2002-03-16 06:18 MidWest 186.44 2.1275e+05 2002-03-18 23:23 severe storm
2003-06-18 02:49 West 0 0 2003-06-18 10:54 attack
2004-06-20 14:39 West 231.29 NaN 2004-06-20 19:16 equipment fault
2002-06-06 19:28 West 311.86 NaN 2002-06-07 00:51 equipment fault
2003-07-16 16:23 NorthEast 239.93 49434 2003-07-17 01:12 fire
2004-09-27 11:09 MidWest 286.72 66104 2004-09-27 16:37 equipment fault
2004-09-05 17:48 SouthEast 73.387 36073 2004-09-05 20:46 equipment fault
2004-05-21 21:45 West 159.99 NaN 2004-05-22 04:23 equipment fault
2002-09-01 18:22 SouthEast 95.917 36759 2002-09-01 19:12 severe storm
2003-09-27 07:32 SouthEast NaN 3.5517e+05 2003-10-04 07:02 severe storm
2003-11-12 06:12 West 254.09 9.2429e+05 2003-11-17 02:04 winter storm
2004-09-18 05:54 NorthEast 0 0 NaT equipment fault
⋮
라이브 편집기에서 그룹별 계산 작업을 엽니다. 정전이 발생한 연도와 지역별로 데이터를 그룹화하려면 그룹화 기준을 사용하여 OutageTime
변수를 연도별로 비닝하고 고유한 값을 기준으로 Region
변수를 그룹화합니다. 그런 다음 계산 대상 필드에서 Loss
변수를 선택하여 전력 손실을 계산합니다.
그룹별 계산 작업에서는 그룹에 대해 세 가지 다른 유형의 계산을 수행할 수 있습니다. 정전 데이터를 필터링하려면 계산 유형을 그룹별 필터링으로 설정합니다. 그런 다음 그룹별 계산을 새 로컬 함수로 설정하고, 유지할 이상값 데이터에 대해 true를 반환하고 이상값이 아니므로 필터링할 데이터에 대해 false를 반환하는 함수를 작성하여 필터를 직접 지정합니다.
결과 타임테이블에는 전력 손실이 해당 연도와 지역의 평균 손실에서 3 표준편차 범위 밖에 있는 이상값 정전 데이터만 포함됩니다.
outageFilter=159×6 timetable
OutageTime Region Loss Customers RestorationTime Cause year_OutageTime
________________ _________ ______ __________ ________________ _______________ _______________
2004-04-06 05:44 West 434.81 3.4037e+05 2004-04-06 06:10 equipment fault 2004
2002-06-06 19:28 West 311.86 NaN 2002-06-07 00:51 equipment fault 2002
2005-03-08 16:37 SouthEast 1339.2 4.3003e+05 2005-03-10 20:42 winter storm 2005
2004-07-02 09:16 MidWest 15128 2.0104e+05 2004-07-06 14:11 thunder storm 2004
2002-04-20 16:46 MidWest 23141 NaN NaT unknown 2002
2002-12-10 10:45 MidWest 14493 3.0879e+06 2002-12-11 18:06 unknown 2002
2002-05-18 11:04 MidWest 1389.1 1.3447e+05 2002-05-21 01:22 unknown 2002
2003-09-22 00:53 MidWest 3995.8 6.7808e+05 2003-09-23 03:45 unknown 2003
2005-11-05 12:46 NorthEast 2966.1 NaN 2005-11-06 21:40 unknown 2005
2002-08-17 09:05 NorthEast 21673 NaN 2002-08-19 21:45 unknown 2002
2004-09-16 19:42 NorthEast 4718 NaN NaT unknown 2004
2002-05-20 10:57 NorthEast 9116.6 2.4983e+06 2002-05-21 15:22 unknown 2002
2003-09-05 20:15 SouthEast 1700.1 1.6393e+05 2003-09-10 19:59 thunder storm 2003
2004-09-20 12:37 SouthEast 8767.3 2.2249e+06 2004-10-02 06:00 severe storm 2004
2005-09-14 15:45 SouthEast 1839.2 3.4144e+05 NaT severe storm 2005
2003-09-14 16:09 NorthEast 2011.3 6.9368e+05 2003-09-24 07:44 severe storm 2003
⋮
function tf = myFilterFcn(x) % x is the data in a group from one computation variable % tf is true, false, or a logical column vector with the same height as x tf = isoutlier(x); end
관련 예제
파라미터
입력 데이터
— 작업 공간의 유효한 그룹화 데이터
벡터 | 행렬 | 테이블 | 타임테이블
그룹화 기준 드롭다운 목록에서 유효한 작업 공간 그룹화 변수를 선택하여 그룹을 지정합니다. 데이터가 테이블이나 타임테이블에 포함된 경우 그룹화할 테이블 변수를 추가로 선택합니다. 고유한 값을 기준으로 그룹화하거나 데이터를 비닝하는 방법을 지정할 수 있습니다.
계산 대상 드롭다운 목록에서 계산할 작업 공간 데이터를 선택합니다. 데이터가 테이블이나 타임테이블에 포함된 경우 계산할 테이블 변수를 선택합니다.
그룹에 대한 계산
— 수행할 계산 유형
Compute stats by group
| Transform by group
| Filter by group
다음 계산 옵션 중 하나를 선택하십시오.
계산 유형 | 설명 |
---|---|
Compute stats by group | 데이터의 요약(또는 집계)입니다(예: 평균 또는 최댓값). 로컬 함수 이름 또는 함수 핸들을 제공하여 사용자 지정 함수를 제공할 수도 있습니다. 함수는 첫 번째 차원 길이가 1인 그룹당 하나의 엔터티를 반환해야 합니다. 자세한 내용은 groupsummary 항목을 참조하십시오. |
Transform by group | 데이터를 변환합니다. 예를 들어, 2-노름으로 데이터를 스케일링하거나 누락된 데이터를 채웁니다. 로컬 함수 이름 또는 함수 핸들을 제공하여 사용자 지정 함수를 제공할 수도 있습니다. 함수는 첫 번째 차원 길이가 1이거나 입력 데이터와 동일한 행 개수를 가진 하나의 엔터티를 반환해야 합니다. 자세한 내용은 grouptransform 항목을 참조하십시오. |
Filter by group | 필터링 계산을 정의하는 로컬 함수 또는 함수 핸들을 제공하여 각 그룹의 멤버를 필터링합니다. 함수는 선택할 그룹 멤버를 나타내는 데이터와 동일한 행 개수를 가진 논리형 스칼라 또는 논리형 열 벡터를 반환해야 합니다. 함수가 논리형 스칼라를 반환하는 경우 그룹의 모든 멤버가 필터링되거나(값이 false 인 경우) 그룹의 모든 멤버가 필터링되지 않습니다(값이 true 인 경우). 함수가 논리형 벡터를 반환하는 경우 대응하는 요소가 false 이면 그룹의 멤버가 필터링됩니다. 대응하는 요소가 true 이면 멤버가 유지됩니다. 자세한 내용은 groupfilter 항목을 참조하십시오. |
모든 계산 유형에 대해 새로 만들기를 클릭하여 계산을 정의하는 새 함수를 라이브 스크립트에 만들 수 있습니다. 새로 만들기를 클릭하면 선택한 계산 유형에 적합한 구문을 사용하는 예제 함수가 라이브 스크립트에 자동으로 삽입됩니다. 예제 함수의 이름을 변경하는 경우 새 함수 이름을 사용하려면 라이브 작업의 드롭다운 목록에서 방법을 다시 선택합니다.
버전 내역
R2021b에 개발됨R2023a: 고유한 요소의 개수 반환
각 데이터 그룹에서 누락값이 아닌 서로 다른 요소의 개수를 계산합니다. 그룹별 통계량 계산을 선택한 다음 고유 값 개수 또는 모두 선택 계산 방법을 지정합니다.
R2022a: 입력값의 행 개수가 100만 개가 넘는 경우 라이브 편집기 작업이 자동으로 실행되지 않음
이 라이브 편집기 작업은 입력값의 행 개수가 100만 개가 넘는 경우 자동으로 실행되지 않습니다. 이전 릴리스에서는 모든 크기의 입력값에 대해 작업이 항상 자동으로 실행되었습니다. 입력값의 행 개수가 많은 경우 이 작업으로 생성된 코드를 실행하는 데 상당한 시간(몇 초 이상)이 걸릴 수 있습니다.
작업이 자동으로 실행되지 않은 경우 자동 실행 표시기가 비활성화되어 있습니다. 필요한 경우 작업을 수동으로 실행하거나 작업이 자동으로 실행되도록 선택할 수 있습니다.
참고 항목
함수
라이브 편집기 작업
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)