변수 조합 - VTL 문법 및 언어 체계 알아보기

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

1주 전에 업데이트함

VTL이란?

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

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

  • 값: 보기 번호 등에 활용하는 숫자, 알파벳 문자, 변수 이름, 순위형 변수 응답 등 VTL에서 작성할 수 있는 값을 말합니다.

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

  • 조건 구문: 생성하고자 하는 변수에 따라 사용할 수 있는 조건 구문입니다. 조건이 하나일 때는 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

답변이 도움되었나요?