본문으로 바로 가기

데이터분석 준전문가 (ADsP) 필기 · 데이터분석 과목

AI 작성 · 운영진 검수 전

데이터분석 준전문가 (ADsP) R기초와 데이터 마트 핵심정리

중요도
★★★☆☆ (3 / 5)
출제 비중
데이터분석 30문항 중 약 6문항 (20%)

R의 기본 자료형과 함수, 데이터 마트와 요약변수·파생변수, reshape·sqldf·plyr 같은 데이터 가공, 결측값 처리와 이상값 탐지를 다룹니다.

📖 R기초와 데이터 마트 개념 정리 보기 →

R기초와 데이터 마트, 이것만은 꼭 외우세요

  • R 벡터는 한 가지 자료형만 담으며, 섞이면 논리→숫자→문자 순으로 넓은 쪽으로 바뀝니다. 위치 번호는 1부터, 음수는 제외입니다.
  • matrix()는 기본적으로 열 방향으로 채우고, apply(X, 1, f)는 행별, apply(X, 2, f)는 열별로 적용합니다.
  • 요약변수는 집계한 변수(재활용성 높음), 파생변수는 분석가가 의미를 부여한 변수(논리적 타당성 필요)입니다.
  • reshape(melt·cast)는 모양 바꾸기, sqldf는 SQL 사용, plyr는 나누기-적용-합치기, data.table은 빠른 검색에 씁니다.
  • 결측값은 완전 분석·평균 대치·단순 확률 대치·다중 대치(대치→분석→결합)로, 이상값은 Q1−1.5IQR 미만·Q3+1.5IQR 초과로 판정합니다.

R기초와 데이터 마트 대표 문제 10개

예상문제검수 완료데이터분석 › R기초와 데이터 마트★★★★☆

문제 1. 어떤 변수의 1사분위수(Q1)가 20, 3사분위수(Q3)가 40이다. 사분위수 범위(IQR)를 이용해 Q1 − 1.5×IQR보다 작거나 Q3 + 1.5×IQR보다 큰 값을 이상값으로 판정할 때, 이상값에 해당하는 것은?

  1. ① −5
  2. ② 55
  3. ③ 65
  4. ④ 72
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ④ 72

핵심: 이상값 기준: Q1−1.5IQR 미만, Q3+1.5IQR 초과

  1. IQR = Q3 − Q1 = 40 − 20 = 20
  2. 1.5 × IQR = 1.5 × 20 = 30
  3. 아래 기준 = Q1 − 30 = 20 − 30 = −10
  4. 위 기준 = Q3 + 30 = 40 + 30 = 70
  5. −10 이상 70 이하는 정상 범위 → 72는 70보다 크므로 이상값

검산: 72 − 40 = 32 로, 30보다 큽니다.

틀린 선지

  • 65: 70 이하라서 정상 범위입니다.
  • −5: −10 이상이라서 정상 범위입니다.
  • 55: 70 이하라서 정상 범위입니다.
예상문제검수 완료데이터분석 › R기초와 데이터 마트★★★☆☆

문제 2. R에서 다음 코드를 실행했을 때 출력되는 결과는? x <- c(1, "a", TRUE) class(x)

  1. ① "logical"
  2. ② "character"
  3. ③ "numeric"
  4. ④ "list"
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ② "character"

핵심: 벡터는 한 가지 자료형만 — 섞이면 문자형으로 바뀜

R의 벡터(c 함수로 만든 자료)에는 한 가지 자료형만 들어갈 수 있습니다. 서로 다른 자료형을 섞으면 더 넓은 쪽으로 자동 변환됩니다.

  • 변환 순서: 논리형(logical) → 숫자형(numeric) → 문자형(character)
  • 문자 "a"가 들어 있으므로 1과 TRUE도 문자 "1", "TRUE"로 바뀝니다.
  • 따라서 class(x)의 결과는 "character"입니다.

틀린 선지

  • "numeric": 숫자만 있을 때의 결과입니다. 문자 "a"가 있으면 문자형이 됩니다.
  • "logical": TRUE/FALSE만 있을 때의 결과입니다.
  • "list": 여러 자료형을 그대로 담으려면 c()가 아니라 list()를 써야 합니다.
예상문제검수 완료데이터분석 › R기초와 데이터 마트★★★☆☆

문제 3. R에서 다음 코드를 실행했을 때 출력되는 결과는? x <- c(10, 20, 30, 40, 50) x[-2]

  1. ① 10 30 40 50
  2. ② 20
  3. ③ 10 20 30 40
  4. ④ 40
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ① 10 30 40 50

핵심: R 인덱스 앞의 마이너스(-)는 그 위치를 뺀다는 뜻

R에서 대괄호 안에 음수 번호를 쓰면 그 위치의 원소를 빼고 나머지를 보여 줍니다.

  1. x는 10, 20, 30, 40, 50 (위치 1~5)
  2. x[-2]는 2번째 원소(20)를 뺀 나머지
  3. 결과: 10 30 40 50

참고로 R의 위치 번호는 0이 아니라 1부터 시작합니다.

틀린 선지

  • 40: 파이썬처럼 '뒤에서 두 번째'로 착각한 결과입니다. R에서는 음수가 '제외'를 뜻합니다.
  • 20: x[2]의 결과입니다.
  • 10 20 30 40: 마지막 원소를 뺀 결과(x[-5])입니다.
예상문제검수 완료데이터분석 › R기초와 데이터 마트★★★☆☆

문제 4. R에서 다음 코드를 실행했을 때 출력되는 결과는? x <- c(2, 4, NA, 6) mean(x, na.rm = TRUE)

  1. ① 0
  2. ② 3
  3. ③ 4
  4. ④ NA
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ③ 4

핵심: na.rm = TRUE면 결측값(NA)을 빼고 계산

NA는 R에서 결측값(값이 비어 있음)을 뜻합니다.

  1. na.rm = TRUE는 'NA를 빼고 계산하라'는 옵션
  2. NA를 빼면 2, 4, 6 → 3개
  3. 평균 = (2 + 4 + 6) ÷ 3 = 12 ÷ 3 = 4

틀린 선지

  • NA: na.rm 옵션 없이 mean(x)만 실행했을 때의 결과입니다.
  • 3: 합계 12를 NA까지 포함한 4개로 나눈 잘못된 계산입니다.
  • 0: NA를 0으로 바꾼다고 해도 평균은 0이 아닙니다.
예상문제검수 완료데이터분석 › R기초와 데이터 마트★★★☆☆

문제 5. R에서 데이터를 melt() 함수로 '식별자 – 변수 – 값' 형태로 녹인 뒤, cast() 함수로 원하는 모양의 표로 다시 짜는 데 쓰는 패키지는?

  1. ① plyr
  2. ② reshape
  3. ③ data.table
  4. ④ sqldf
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ② reshape

핵심: melt·cast = reshape 패키지

reshape 패키지는 데이터 모양을 바꾸는 데 씁니다.

  1. melt(): 넓은 표를 '식별자(id) – 변수 – 값'의 긴 형태로 녹임
  2. cast(): 녹인 데이터를 원하는 행·열 구조로 다시 짬 (요약 함수도 적용 가능)

틀린 선지

  • sqldf: R에서 SQL 문장으로 데이터를 다루는 패키지입니다.
  • plyr: 데이터를 나누고(split) 함수를 적용한 뒤(apply) 다시 합치는(combine) 패키지입니다.
  • data.table: 키(key)를 이용해 큰 데이터를 빠르게 검색·처리하는 패키지입니다.
예상문제검수 완료데이터분석 › R기초와 데이터 마트★★★☆☆

문제 6. R에서 다음 코드를 실행했을 때 출력되는 결과는? m <- matrix(1:6, nrow = 2) m[1, 3]

  1. ① 6
  2. ② 3
  3. ③ 2
  4. ④ 5
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ④ 5

핵심: matrix()는 기본적으로 열(세로) 방향으로 채움

matrix() 함수는 따로 정하지 않으면(byrow = FALSE) 숫자를 열 방향(위에서 아래로)으로 채웁니다.

  1. 1:6을 2행으로 열 방향으로 채우면
  • 1열: 1, 2
  • 2열: 3, 4
  • 3열: 5, 6
  1. m[1, 3]은 1행 3열의 값 → 5

검산: 2행 3열(m[2, 3])은 6입니다.

틀린 선지

  • 3: byrow = TRUE로 행 방향(1행: 1 2 3)으로 채웠을 때의 1행 3열 값입니다.
  • 6: 2행 3열의 값입니다.
  • 2: 2행 1열의 값입니다.
예상문제검수 완료데이터분석 › R기초와 데이터 마트★★★☆☆

문제 7. R에서 다음 코드를 실행했을 때 출력되는 결과는? m <- matrix(1:6, nrow = 2) apply(m, 1, sum)

  1. ① 6 15
  2. ② 21
  3. ③ 9 12
  4. ④ 3 7 11
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ③ 9 12

핵심: apply(X, 1, 함수)=행별, apply(X, 2, 함수)=열별

apply(행렬, MARGIN, 함수)에서 MARGIN이 1이면 행(가로)별, 2이면 열(세로)별로 함수를 적용합니다.

  1. 행렬은 열 방향으로 채워져
  • 1행: 1, 3, 5
  • 2행: 2, 4, 6
  1. 행별 합계
  • 1행: 1 + 3 + 5 = 9
  • 2행: 2 + 4 + 6 = 12
  1. 결과: 9 12

검산: 9 + 12 = 21 = 1부터 6까지의 합

틀린 선지

  • 3 7 11: 열별 합계(apply(m, 2, sum))입니다.
  • 6 15: 행 방향(byrow = TRUE)으로 채웠다고 착각했을 때의 행별 합계입니다.
  • 21: 전체 합계(sum(m))입니다.
예상문제검수 완료데이터분석 › R기초와 데이터 마트★★★☆☆

문제 8. 데이터 마트를 만들 때 '주 구매 매장', '근무 시간대 구매 여부'처럼 분석가가 특정 조건이나 함수로 새 의미를 부여해 만든 변수로, 주관적일 수 있어 논리적 타당성을 갖춰야 하는 변수는?

  1. ① 요약변수
  2. ② 더미변수
  3. ③ 목표변수
  4. ④ 파생변수
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ④ 파생변수

핵심: 요약변수=종합·집계(재활용 높음), 파생변수=의미 부여(주관적)

데이터 마트의 변수는 두 가지를 구분합니다.

  • 요약변수: 수집한 정보를 분석 목적에 맞게 종합·집계한 변수. 예) 기간별 구매 금액·횟수, 상품별 구매 순위. 많은 모델에 공통으로 쓸 수 있어 재활용성이 높음
  • 파생변수: 분석가가 특정 조건이나 함수로 의미를 부여한 변수. 예) 주 구매 매장, 근무 시간 구매자, 주 활동 지역. 주관적일 수 있으므로 논리적 타당성이 필요함

틀린 선지

  • 요약변수: 단순 집계 변수로, 분석가의 해석이 덜 들어갑니다.
  • 목표변수: 모델이 맞히려는 결과 변수(종속변수)입니다.
  • 더미변수: 범주형 값을 0과 1로 바꾼 변수입니다.
예상문제검수 완료데이터분석 › R기초와 데이터 마트★★★☆☆

문제 9. R에서 다음 결과를 얻었다. 이에 대한 설명으로 옳지 않은 것은? x <- c(1, 2, 3, 3, 4, 6, 7, 7, 9, 20) summary(x) Min. 1st Qu. Median Mean 3rd Qu. Max. 1.0 3.0 5.0 6.2 7.0 20.0

  1. ① 평균이 중앙값보다 커서 오른쪽으로 꼬리가 긴 분포로 볼 수 있다
  2. ② 상자그림 기준(Q3 + 1.5×IQR 초과)으로 최댓값 20은 이상값이다
  3. ③ 중앙값은 평균과 같은 6.2이다
  4. ④ 사분위수 범위(IQR)는 4이다
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ③ 중앙값은 평균과 같은 6.2이다

핵심: summary(): 최솟값·Q1·중앙값·평균·Q3·최댓값

summary() 결과를 하나씩 읽습니다.

  1. IQR = 3rd Qu. − 1st Qu. = 7.0 − 3.0 = 4
  2. 위 기준 = 7.0 + 1.5 × 4 = 13 → 최댓값 20은 13보다 커서 이상값
  3. 평균 6.2 > 중앙값 5.0 → 큰 값(20)이 평균을 끌어올린 오른쪽 꼬리 분포
  4. 6.2는 평균(Mean)이고 중앙값(Median)은 5.0입니다. 따라서 '중앙값은 평균과 같은 6.2'는 옳지 않습니다.

검산: 값을 크기순으로 놓으면 가운데 두 값은 4와 6이므로 중앙값 = (4 + 6) ÷ 2 = 5.0입니다.

틀린 선지

  • IQR은 4: 옳은 설명입니다.
  • 최댓값 20은 이상값: 옳은 설명입니다.
  • 오른쪽 꼬리 분포: 옳은 설명입니다.
예상문제검수 완료데이터분석 › R기초와 데이터 마트★★★☆☆

문제 10. R에서 rep(1:3, each = 2)를 실행했을 때 출력되는 결과는?

  1. ① 1 1 2 2 3 3
  2. ② 2 2 2
  3. ③ 1 2 3
  4. ④ 1 2 3 1 2 3
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ① 1 1 2 2 3 3

핵심: rep(each=) 원소별 반복, rep(times=) 전체 반복

rep() 함수는 값을 반복합니다.

  • each = 2: 원소 하나하나를 두 번씩 반복 → 1 1 2 2 3 3
  • times = 2: 전체 묶음을 두 번 반복 → 1 2 3 1 2 3

틀린 선지

  • 1 2 3 1 2 3: rep(1:3, times = 2)의 결과입니다.
  • 1 2 3: 반복하지 않은 원래 값입니다.
  • 2 2 2: rep(2, 3)처럼 2를 세 번 반복한 결과입니다.

직접 풀어서 확인해 보세요.