이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
rowfun
테이블 또는 타임테이블 행에 함수 적용
설명
는 함수 B
= rowfun(func
,A
,Name,Value
)func
을 하나 이상의 Name,Value
인수로 추가 옵션을 지정하여 테이블 A
의 각 행에 적용합니다.
예를 들어, "GroupingVariables"
이름-값 인수를 사용하여 행 그룹에 대한 계산을 수행할 수 있습니다. 데이터 그룹 계산에 대한 자세한 내용은 데이터 그룹에 대한 계산 항목을 참조하십시오.
예제
단일 출력값을 갖는 함수를 행에 적용하기
숫자형 데이터로 구성된 두 개의 변수를 갖는 테이블 A
를 만듭니다.
rng('default')
X = randi(10,[5,1]);
Y = randi(10,[5,1]);
A = table(X,Y)
A=5×2 table
X Y
__ __
9 1
10 3
2 6
10 10
7 10
함수 plus
를 A
의 각 행에 적용합니다. 함수 호출 plus(X,Y)
는 연산 X + Y
와 동일합니다. plus
함수는 두 개의 입력값을 받아 하나의 출력값을 반환합니다. 함수를 rowfun
에 대한 입력 인수로 지정하려면 @
기호를 사용하십시오.
B = rowfun(@plus,A,"OutputVariableNames","Sum")
B=5×1 table
Sum
___
10
13
8
20
17
출력 테이블 B
를 입력 테이블 A
에 추가합니다.
C = [A B]
C=5×3 table
X Y Sum
__ __ ___
9 1 10
10 3 13
2 6 8
10 10 20
7 10 17
여러 개의 출력값을 갖는 함수를 행에 적용하기
여러 개의 출력값을 반환하는 함수를 테이블의 행에 적용합니다. rowfun
함수는 적용된 함수의 각 출력값을 출력 테이블의 변수 하나에 저장합니다.
readtable
함수를 사용하여 CSV(쉼표로 구분된 값) 파일인 testScores.csv
의 데이터를 테이블로 읽어올 수 있습니다. 샘플 파일에는 두 학교에 다니는 학생 10명의 테스트 점수가 포함되어 있습니다. 출력 테이블에는 숫자형 데이터를 가지는 변수와 텍스트 데이터를 가지는 다른 변수가 포함됩니다. 이러한 변수 중 하나인 School
에는 고정된 값 집합 또는 범주 집합이 있습니다. 이러한 범주는 이 테이블 내에 있는 두 개의 학생 그룹을 나타냅니다. School
을 categorical형 변수로 변환합니다.
scores = readtable("testScores.csv","TextType","string"); scores.School = categorical(scores.School)
scores=10×5 table
LastName School Test1 Test2 Test3
__________ __________ _____ _____ _____
"Jeong" XYZ School 90 87 93
"Collins" XYZ School 87 85 83
"Torres" XYZ School 86 85 88
"Phillips" ABC School 75 80 72
"Ling" ABC School 89 86 87
"Ramirez" ABC School 96 92 98
"Lee" XYZ School 78 75 77
"Walker" ABC School 91 94 92
"Garcia" ABC School 86 83 85
"Chang" XYZ School 79 76 82
각 행의 테스트 점수 최솟값과 최댓값을 구하려면 bounds
함수를 사용하십시오. bounds
함수는 두 개의 출력 인수를 반환하므로, rowfun
을 사용하여 이 함수를 scores
에 적용합니다. rowfun
의 출력값은 TestMin
과 TestMax
변수를 포함하는 새 테이블입니다. 또한, 이 경우에는 각 행의 값들이 bounds
로 전달되기 전에 벡터로 결합되도록 "SeparateInputs"
를 false
로 지정합니다.
vars = ["Test1","Test2","Test3"]; minmaxTest = rowfun(@bounds, ... scores, ... "InputVariables",vars, ... "OutputVariableNames",["TestMin","TestMax"], ... "SeparateInputs",false)
minmaxTest=10×2 table
TestMin TestMax
_______ _______
87 93
83 87
85 88
72 80
86 89
92 98
75 78
91 94
83 86
76 82
최솟값과 최댓값을 scores
에 추가할 수 있습니다.
scores = [scores minmaxTest]
scores=10×7 table
LastName School Test1 Test2 Test3 TestMin TestMax
__________ __________ _____ _____ _____ _______ _______
"Jeong" XYZ School 90 87 93 87 93
"Collins" XYZ School 87 85 83 83 87
"Torres" XYZ School 86 85 88 85 88
"Phillips" ABC School 75 80 72 72 80
"Ling" ABC School 89 86 87 86 89
"Ramirez" ABC School 96 92 98 92 98
"Lee" XYZ School 78 75 77 75 78
"Walker" ABC School 91 94 92 91 94
"Garcia" ABC School 86 83 85 83 86
"Chang" XYZ School 79 76 82 76 82
함수를 행 그룹에 적용하기
입력 테이블의 행 그룹에서 가져온 데이터에 함수를 적용합니다. 출력 테이블은 각 그룹에 대해 하나의 행을 포함합니다.
CSV(쉼표로 구분된 값) 파일 testScores.csv
의 데이터를 테이블로 읽어옵니다. 파일에는 서로 다른 두 학교에 다니는 학생 10명의 테스트 점수가 포함되어 있습니다.
scores = readtable("testScores.csv","TextType","string"); scores.School = categorical(scores.School)
scores=10×5 table
LastName School Test1 Test2 Test3
__________ __________ _____ _____ _____
"Jeong" XYZ School 90 87 93
"Collins" XYZ School 87 85 83
"Torres" XYZ School 86 85 88
"Phillips" ABC School 75 80 72
"Ling" ABC School 89 86 87
"Ramirez" ABC School 96 92 98
"Lee" XYZ School 78 75 77
"Walker" ABC School 91 94 92
"Garcia" ABC School 86 83 85
"Chang" XYZ School 79 76 82
각 학생의 테스트 점수 평균을 계산하고 새 테이블 변수로 추가합니다. 이를 수행하는 한 가지 방법은 숫자형 테스트 점수를 추출한 다음 두 번째 차원을 따라 평균을 계산하는 것입니다. 결과는 열 벡터입니다. 이 열 벡터를 scores
에 새 변수로 추가할 수 있습니다.
scores.TestMean = mean(scores{:,["Test1","Test2","Test3"]},2)
scores=10×6 table
LastName School Test1 Test2 Test3 TestMean
__________ __________ _____ _____ _____ ________
"Jeong" XYZ School 90 87 93 90
"Collins" XYZ School 87 85 83 85
"Torres" XYZ School 86 85 88 86.333
"Phillips" ABC School 75 80 72 75.667
"Ling" ABC School 89 86 87 87.333
"Ramirez" ABC School 96 92 98 95.333
"Lee" XYZ School 78 75 77 76.667
"Walker" ABC School 91 94 92 92.333
"Garcia" ABC School 86 83 85 84.667
"Chang" XYZ School 79 76 82 79
학교별로 테스트 점수의 평균이 가장 높은 학생을 찾습니다. 이 예제에 첨부된 지원 함수 findNameAtMax
는 최고 점수와 해당 점수를 획득한 학생의 이름을 모두 반환합니다. 각 학생 그룹에 findNameAtMax
를 적용하려면 rowfun
을 사용하십시오. findNameAtMax
는 여러 개의 입력 인수(학생의 이름과 테스트 점수)를 갖고 여러 개의 출력 인수를 반환하므로 rowfun
함수가 적합합니다. 출력 테이블의 변수 GroupCount
는 각 학교에 대한 scores
의 행 개수를 나타냅니다.
maxScoresBySchool = rowfun(@findNameAtMax, ... scores, ... "InputVariables",["LastName","TestMean"], ... "GroupingVariables","School", ... "OutputVariableNames",["max_TestMean","LastName"])
maxScoresBySchool=2×4 table
School GroupCount max_TestMean LastName
__________ __________ ____________ _________
ABC School 5 95.333 "Ramirez"
XYZ School 5 90 "Jeong"
function [maxValue,lastName] = findNameAtMax(names,values) % Return maximum value and the last name % from the row at which the maximum value occurred [maxValue,maxIndex] = max(values); lastName = names(maxIndex); end
입력 인수
func
— 함수
함수 핸들
함수로, 함수 핸들로 지정됩니다. 기존 함수의 핸들을 지정하거나, 함수를 파일에 정의하거나, 함수를 익명 함수로 정의할 수 있습니다. func
가 둘 이상의 함수 파일에 대응하는 경우(즉, func
가 일련의 오버로드된 함수를 나타내는 경우) MATLAB®은 입력 인수의 클래스에 따라 어떤 함수를 호출할지를 결정합니다.
함수 func
는 width(A)
개의 입력값을 받아야 합니다. 기본적으로, rowfun
은 func
의 첫 번째 출력을 반환합니다. func
의 출력값을 두 개 이상 반환하려면 "NumOutputs"
또는 "OutputVariableNames"
이름-값 인수를 사용하십시오.
예: func = @minus;
는 두 개의 입력값을 받아서 첫 번째 입력값에서 두 번째 입력값을 뺍니다.
예: func = @(x,y) x.^2+y.^2;
에서는 두 개의 입력값을 가져와서 제곱의 합을 구합니다.
A
— 입력 테이블
테이블 | 타임테이블
입력 테이블로, table형이나 timetable형으로 지정됩니다.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: InputVariables=["Var2","Var3"]
은 func
의 입력값으로 A
의 Var2
변수와 Var3
변수만 사용합니다.
InputVariables
— func
에 전달할 A
의 변수를 선택하기 위한 지정자
양의 정수 | 양의 정수로 구성된 벡터 | string형 배열 | 문자형 벡터 | 문자형 벡터로 구성된 셀형 배열 | pattern
형 스칼라 | 논리형 벡터 | 함수 핸들
func
에 전달할 A
의 변수를 선택하기 위한 지정자로, "InputVariables"
와 함께 양의 정수, 양의 정수로 구성된 벡터, string형 배열, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, pattern
스칼라, 논리형 벡터 또는 함수 핸들로 지정됩니다.
"InputVariables"
를 함수 핸들로 지정하는 경우, 이것은 논리형 스칼라를 반환해야 하고, rowfun
은 A
에서 함수가 1
(true
)을 반환하는 변수만 전달합니다.
GroupingVariables
— 그룹화 변수가 될 A
의 변수를 선택하기 위한 지정자
양의 정수 | 양의 정수로 구성된 벡터 | string형 배열 | 문자형 벡터 | 문자형 벡터로 구성된 셀형 배열 | pattern
형 스칼라 | 논리형 벡터
그룹화 변수가 될 A
의 변수를 선택하기 위한 지정자로, "GroupingVariables"
와 함께 양의 정수, 양의 정수로 구성된 벡터, string형 배열, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, pattern
스칼라 또는 논리형 벡터로 지정됩니다.
그룹화 변수의 고유한 값은 그룹을 지정합니다. A
에서 그룹화 변수 값이 같은 행은 같은 그룹에 속합니다. rowfun
은 func
를 A
의 각 행에 개별적으로 적용하는 대신 각 행 그룹에 적용합니다. 출력값 B
는 각 그룹에 대한 하나의 행을 포함합니다. 그룹화 변수를 사용한 계산에 대한 자세한 내용은 데이터 그룹에 대한 계산 항목을 참조하십시오.
그룹화 변수는 다음 표에 나열된 임의의 데이터형을 가질 수 있습니다.
그룹을 지정하는 값 | 그룹화 변수의 데이터형 |
---|---|
숫자 | 숫자형 벡터 또는 논리형 벡터 |
텍스트 | string형 배열, 또는 문자형 벡터로 구성된 셀형 배열 |
날짜/시간 |
|
범주 |
|
Bin | 숫자형 값, |
그룹화 변수가 NaN
또는 누락값(예: NaT
, 정의되지 않은 categorical
형 값 또는 누락값인 string형)을 포함하는 경우, 이에 해당하는 행은 어떤 그룹에도 속하지 않으며 출력값에서 제외됩니다.
행 레이블은 그룹화 변수일 수 있습니다. 사용자는 행 레이블만을 기준으로, 또는 하나 이상의 A
의 변수를 기준으로, 또는 행 레이블과 변수를 함께 기준으로 하여 그룹화할 수 있습니다.
A
가 테이블인 경우 레이블은 행 이름입니다.A
가 타임테이블인 경우 레이블은 행 시간값입니다.
출력값 B
는 입력값 A
의 각 행 그룹에 대한 하나의 행을 포함합니다. B
가 테이블 또는 타임테이블이면 B
는 다음을 포함합니다.
func
가 적용된 입력 테이블 변수에 대응하는 변수.그룹화 변수에 대응하는 변수.
값이 각 그룹에 있는 입력값
A
의 행 개수인 새로운 변수GroupCount
.
참고: B
가 타임테이블이면 B
는 다음도 포함합니다.
A
의 각 행 그룹의 첫 번째 행 시간값이B
의 대응하는 행 시간값인 행 시간값.B
를 행 시간값이 없는 테이블로 반환하려면"OutputFormat"
을"table"
로 지정하십시오.
SeparateInputs
— 개별 입력값으로 func
를 호출할지 여부에 대한 표시자
true
(디폴트 값) | false
| 1
| 0
개별 입력값으로 func
를 호출할지 여부에 대한 표시자로, "SeparateInputs"
와 함께 true
, false
, 1
, 0
중 하나가 지정됩니다.
|
|
|
예를 들어, |
ExtractCellContents
— func
에 셀형 변수의 값을 전달할지 여부에 대한 표시자
false
(디폴트 값) | true
| 0
| 1
func
에 셀형 변수의 값을 전달할지 여부에 대한 표시자로, "ExtractCellContents"
와 함께 false
, true
, 0
, 1
중 하나가 지정됩니다.
|
그룹화 계산의 경우, 셀형 변수의 각 그룹 내 값은 세로 결합이 가능해야 합니다. |
|
이는 디폴트 동작입니다. |
OutputVariableNames
— func
의 출력값에 대한 변수 이름
문자형 벡터 | 문자형 벡터로 구성된 셀형 배열 | string형 배열
func
의 출력값에 대한 변수 이름으로, "OutputVariableNames"
와 함께 비어 있지 않은 고유한 이름을 갖는 문자형 벡터, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열이 지정됩니다. 이름의 개수는 func
에서 필요한 출력값의 개수와 같아야 합니다.
또한, 변수 이름은 유효한 MATLAB 식별자여야 합니다. 유효한 MATLAB 식별자를 변수 이름으로 사용할 수 없는 경우 MATLAB에서는 {'Var1' ... 'Var
형식의 N
'}N
개 문자형 벡터로 구성된 셀형 배열을 사용합니다. 여기서 N
은 변수의 개수입니다. 유효한 MATLAB 변수 이름은 함수 isvarname
을 사용하여 확인할 수 있습니다.
NumOutputs
— func
에서 얻는 출력값 개수
0
| 양의 정수
func
에서 얻는 출력값 개수로, "NumOutputs"
와 함께 0
이나 양의 정수가 지정됩니다. 정수는 func
에서 가능한 출력값 개수보다 작거나 같아야 합니다.
예: "NumOutputs",2
를 사용하면 rowfun
이 두 개의 출력값으로 func
를 호출합니다.
OutputFormat
— B
의 형식
"auto"
(디폴트 값) | "table"
| "timetable"
| "uniform"
| "cell"
B
의 형식으로, "OutputFormat"
과 함께 값 "auto"
, "table"
, "timetable"
, "uniform"
, "cell"
중 하나로 지정됩니다.
|
|
|
|
|
|
|
|
|
|
ErrorHandler
— func
가 실패할 경우 호출할 함수
함수 핸들
func
가 실패할 경우 호출할 함수로, "ErrorHandler"
와 함께 함수 핸들로 지정됩니다. 오류를 다시 발생시키거나 함수 func
에 대해 유효한 출력값을 반환하도록 이 함수를 정의합니다.
MATLAB에서는 다음과 같이 2개의 입력 인수로 지정된 오류 처리 함수를 호출합니다.
다음 필드를 포함한 구조체:
identifier
오류 ID입니다.
message
오류 메시지 텍스트입니다.
index
오류가 발생한 행 또는 그룹의 인덱스.
오류 발생 시 함수
func
의 입력 인수 세트
예를 들면 다음과 같습니다.
function [A, B] = errorFunc(S, varargin)
warning(S.identifier, S.message);
A = NaN; B = NaN;
출력 인수
세부 정보
데이터 그룹에 대한 계산
데이터 분석에서는 일반적으로 데이터 그룹에 대한 계산을 수행합니다. 이러한 계산의 경우 하나 이상의 데이터 변수를 데이터 그룹으로 분할하고, 각 그룹에 대해 계산을 수행하고, 결과를 하나 이상의 출력 변수로 조합합니다. 하나 이상의 그룹화 변수를 사용하여 그룹을 지정할 수 있습니다. 그룹화 변수의 고유 값은 데이터 변수의 대응값이 속하는 그룹을 정의합니다.
예를 들어, 다음 도식은 6×1 숫자형 벡터를 두 개의 데이터 그룹으로 분할하고 각 그룹의 평균을 계산한 다음 출력값을 2×1 숫자형 벡터로 조합하는 그룹화된 간단한 계산을 보여줍니다. 6×1 그룹화 변수에는 두 개의 고유한 값 AB
와 XYZ
가 있습니다.
숫자, 텍스트, 날짜/시간, 범주 또는 Bin이 포함된 그룹화 변수를 지정할 수 있습니다.
확장 기능
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
버전 내역
R2013b에 개발됨R2023a: "OutputFormat"
이름-값 인수는 "auto"
를 값으로 받을 수 있음
"OutputFormat"
이름-값 인수는 "auto"
를 값으로 받을 수 있습니다. 이 값은 디폴트 값입니다. 이 경우 rowfun
은 데이터형이 입력값 A
의 데이터형과 일치하는 출력값을 반환합니다.
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)