메인 콘텐츠로 건너뛰기
변수 생성 - VTL 문법 및 언어 체계 알아보기

변수 생성의 VTL 문법과 언어 체계에 대해 알아봅니다. 사용자는 이를 참고해서 VTL 코드를 작성해 새로운 변수를 생성할 수 있습니다.

어제 업데이트함

VTL이란?

VTL(Variable Transform Language)은 오픈서베이가 변수 생성 작업을 처리하기 위해 활용하는 언어 체계입니다.

이러한 VTL에는 사용할 수 있는 값, 연산자, 조건 구문이 존재합니다.

  • 값: 숫자, 알파벳 문자, 변수 이름, 순위 선택형 변수 응답 등 VTL에서 작성할 수 있는 값을 말합니다.

  • 연산자: 숫자형, 평가형, NPS 등 변수는 덧셈·뺄셈 등 산술 연산자와 합계 등 함수를 이용해서 새로운 변수를 생성할 수 있습니다. 이에 다양한 연산자를 사용해서 VTL 을 입력할 수 있습니다.

  • 조건 구문: 생성하고자 하는 변수에 따라 사용할 수 있는 조건 구문입니다. 조건이 하나일 때는 IF 구문을, 조건이 여러 개일 때는 CASE 구문을 사용합니다.. 조건이 하나일 때는 IF 구문을, 조건이 여러 개일 때는 CASE 구문을 사용합니다.

VTL 구성 요소 알아보기

VTL은 값, 연산자, 조건식으로 구성됩니다. 각 구성 요소를 활용해서 새로운 변수를 생성하기 위한 VTL을 작성할 수 있습니다.

숫자, 알파벳 문자, 변수 이름, 순위형 변수 응답 등 VTL에서 작성할 수 있는 값을 말합니다.

① 숫자 및 값

숫자

예시

참고사항

정수

1,-1,0

소수점

1.23, -1.23

  • 소수점은 최대 4자리까지 허용됩니다.

숫자 리스트

[1, 2, 3, 4, 5]

[1, 2, 3, 4, 5, ...]

  • 보기 번호를 쉼표(,)로 분리하고 대괄호로 감싸서 작성합니다.

  • 말줄임표를 지원합니다. 리스트에 제시하지 않은 나머지 모든 값을 의미합니다.

② 문자

문자

예시

참고사항

문자열

‘abc’, ‘def’

  • 따옴표로 감싸서 작성합니다.

  • 최대 길이 제한은 999자입니다.

③ 변수

변수

예시

참고사항

변수명

Q1번 문항 선택

‘vQ1’

  • 변수명 앞에 v를 추가합니다.

  • 따옴표를 감싸서 작성합니다.

④ 객관식 순위형 변수 순위 선택

변수

예시

순위 선택형 변수 선택

  • Q1번의 N순위 선택은 아래와 같이 작성합니다.
    v’Q1’ rank 1
    v’Q1’ rank 1,2,3
    v’Q1’ rank 1:3

연산자

숫자형, 평가형, NPS 등 변수는 덧셈·뺄셈 등 산술 연산자와 합계 등 함수를 이용해서 새로운 변수를 생성할 수 있습니다. 이에 다양한 연산자를 사용해서 VTL 을 입력할 수 있습니다.

유형

연산자

예시

산술

덧셈 (+)

  • v’Q1’ + 1.5

산술

뺄셈 (-)

  • v’Q1’ - 1

산술

곱셈 (*)

  • v’Q1’ * 10

산술

나눗셈 (/)

  • v’Q1’ / 10

산술

나머지 (%)

  • v’Q1’ % 2

산술

지수 연산 (^)

  • v’Q1’ ^ 3

함수

sum

  • Q1과 Q2의 응답 합계

  • sum(v’Q1’, v’Q2’)

함수

min

  • Q1과 Q2의 응답 중 최솟값

  • min(v’Q1’, v’Q2’)

함수

max

  • Q1과 Q2의 응답 중 최대값

  • max(v’Q1’, v’Q2’)

함수

mean

  • Q1과 Q2의 응답 평균

  • mean(v’Q1’, v’Q2’)

함수

count

  • Q1에서 응답자가 선택한 보기 개수
    count(v’Q1’)

  • Q1의 1번~4번 보기에 한해 응답자가 선택한 보기 개수
    count(v’Q1’, [1,2,3,4])

함수

ifmissing

  • 미응답에 대해 일괄적으로 값 부여
    ex. ifmissing(v’Q1’, -1)

조건 구문

생성하고자 하는 변수에 따라 사용할 수 있는 조건 구문입니다. 조건이 하나일 때는 IF 구문을, 조건이 여러 개일 때는 CASE 구문을 사용합니다. 이러한 조건문에는 연산자 파트에서 소개한 산술 연산자와 함수를 그대로 이용할 수 있습니다.

① IF 구문

IF 구문은 하나의 조건으로 변수를 생성할 때 사용하는 조건 구문입니다. 이러한 IF 구문은 조건을 정의하고 해당 조건이 충족될 때 결과를 반환하거나 조건이 충족되지 않으면 다른 결과를 반환합니다.

IF 구문은 아래와 같이 구성됩니다.

  • condition: 평가 조건입니다.

  • true_result: condition이 참인 경우 반환하는 결과입니다.

  • false_result: condition이 거짓인 경우 반환하는 결과입니다.

IF (condition, true_result, false_result)

IF 구문은 아래와 같은 방식으로 사용할 수 있습니다.

예시 상황

VTL 문법

1) Q1 응답값이 10보다 큰 경우 3번 값으로 묶을때 사용

2) Q1 응답값이 10이고 Q2 응답값이 10인 경우 1번 값으로 묶고, 그렇지 않은 경우는 2번 값으로 묶을때 사용

1) if(v’Q1’ > 10, 3)
2) if (v’Q1’==10 or v’Q2’==10, 1,2)

② CASE 구문

CASE 구문은 여러 여러 조건으로 변수를 조합해서 생성할 때 사용하는 조건 구문입니다. 이러한 CASE 구문은 구문 내 연속된 when 절을 평가해서 조건이 참인 결과를 모두 반환합니다. 나머지 when 절 결과는 평가되지 않으며, 모든 when 조건이 거짓이라면 미응답으로 처리됩니다..

CASE 구문은 아래와 같이 구성됩니다.

  • case: case 키워드로 시작합니다

  • when: 평가 조건입니다. 1개의 case 구문에 when 절이 여러 번 포함될 수 있습니다.

  • then: when 절의 조건이 참인 경우 반환하는 결과입니다. 1개의 then 절은 1개의 when 절에 대응하는 방식으로 사용됩니다.

  • end: end 키워드로 끝납니다.

CASE 구문은 아래와 같은 방식으로 사용할 수 있습니다.

예시 상황

VTL 문법

Q1에서 1번 값은 1번 값으로 묶고, 2~4번 값은 2번 값으로 묶고, 5~9번 값은 3번 값으로 묶고10~99번 값은 4번 값으로 묶을때 사용

case

when v'Q1'==1 then 1

when v'Q1' in [2,3,4] then 2

when v'Q1' between [5,9] then 3

end

Q1에서 1번 값을 선택하고, Q2에서 2번 값을 선택한 경우 1번 값으로 묶고,Q1에서 1번 값보다 큰 값을 선택하고 Q2에서 1번 값보다 큰 값을 선택한 경우 2번 값으로 묶고,Q1에서 1번 값을 선택했거나 Q2에서 1번 값을 선택했을 경우 3번 값로 묶을때 사용

case

when v'Q1'==1 and v'Q2'==1 then 1

when v'Q1' > 1 and v'Q2' > 1 then 2

when v'Q1'==1 or v'Q2'==1 then 3

end

답변이 도움되었나요?