ADsP2026년 4월 29일· 10 min read· 조회 1

ADsP R 기본 문법 정리 (벡터·데이터프레임·결측치 처리)

ADsP 3과목에서 출제되는 R 기본 문법을 시험에 나오는 부분만 골라 정리했습니다. R을 처음 본 비전공자도 이 한 글로 충분.

안녕하세요. 문어입니다 🐙


결론 먼저

ADsP에서 R은 실행 환경을 구축할 필요까지는 없고, 시험에 나오는 함수·문법을 "보면 뭐 하는 코드인지 읽을 수 있는 수준" 까지만 가면 됩니다.

영역시험 출제 함수
변수·할당<-, =, assign()
데이터 타입numeric, character, logical, factor
벡터c(), seq(), rep(), 인덱싱 []
데이터프레임data.frame(), $, head(), summary()
결측치NA, is.na(), na.rm=TRUE
기본 통계mean(), sd(), var(), cor()

이 6박스만 코드로 봤을 때 의미 해석되면 R 관련 문제는 다 풀려요.


왜 R 부분에서 점수가 갈리나

ADsP는 "R 코드를 직접 짜는" 시험이 아니라 "R 코드를 보고 결과를 묻는" 시험이에요. 그래서:

  • 코드를 한 줄씩 따라가며 결과를 머릿속에서 시뮬레이션할 수 있어야 함
  • 함수 이름과 인자 의미를 외워야 함
  • 인덱싱 결과 행/열 수를 직접 세야 함

비전공자가 가장 헤매는 건 벡터 인덱싱결측치 처리 두 영역. 거기서 매회 1–2문제 빠지는 경우 흔합니다.

R은 "코드 작성" 이 아니라 "코드 읽기" 가 시험 목표예요. 손코딩으로 작성해보지 말고, 눈으로 읽고 결과 맞추는 연습 위주로.

1. 변수 할당

R의 할당 기호는 4가지가 있어요. ADsP에서는 <- 가 가장 자주 나옵니다.

x <- 10        # 가장 일반적
y = 20         # 함수 인자처럼 보일 수 있어 비추
z <<- 30       # 전역 할당 (함수 안에서)
assign("w", 40)  # 함수형 할당

<-= 는 거의 동일하지만, 함수 인자에서는 = 만 쓸 수 있다는 차이가 있어요. (mean(x = c(1,2,3)))


2. 데이터 타입과 형변환

타입예시확인 함수변환 함수
numeric1.5, 100is.numeric()as.numeric()
integer5Lis.integer()as.integer()
character"ABC"is.character()as.character()
logicalTRUE, FALSEis.logical()as.logical()
factorfactor(c("a","b","a"))is.factor()as.factor()

특히 factor 는 ADsP 단골이에요. 범주형 변수를 표현하는 타입이고 회귀 분석에서 가변수(dummy variable) 자동 처리 됩니다.

x <- factor(c("low", "mid", "high"), levels = c("low", "mid", "high"))
levels(x)   # "low" "mid" "high"

levels 는 가능한 값의 집합. 순서를 명시하면 ordered factor.


3. 벡터 (Vector)

R의 가장 기본 자료구조. 모든 원소가 같은 타입이어야 해요.

# 생성
v1 <- c(1, 2, 3, 4, 5)
v2 <- 1:10                # 1부터 10까지
v3 <- seq(1, 10, by = 2)  # 1, 3, 5, 7, 9
v4 <- rep(1, times = 3)   # 1 1 1

# 인덱싱
v1[1]      # 첫 번째 (R은 1부터)
v1[2:4]    # 2-4번째
v1[-1]     # 첫 번째 제외 (음수는 제외)
v1[c(1,3)] # 1번째와 3번째
v1[v1 > 3] # 조건 인덱싱

함정: R 인덱스는 0이 아니라 1부터 시작. 파이썬 익힌 사람이 자주 헷갈려요.

음수 인덱싱은 "이 위치를 제외" 라는 의미. 파이썬의 음수와 다릅니다.


4. 데이터프레임 (Data Frame)

가장 자주 쓰이는 구조. 각 열은 다른 타입 가능.

df <- data.frame(
  name = c("A", "B", "C"),
  age  = c(20, 30, 40),
  pass = c(TRUE, FALSE, TRUE)
)

# 접근
df$name        # name 열 (벡터로 반환)
df[, "name"]   # 동일
df[1, ]        # 첫 번째 행
df[df$age >= 30, ]   # age >= 30 행만

# 요약
head(df)       # 앞 6행
str(df)        # 구조
summary(df)    # 요약 통계
nrow(df); ncol(df)  # 행/열 수

$ 는 데이터프레임의 열 접근 연산자. ADsP 코드 문제에서 자주 보이는 표현이에요.


5. 결측치 (NA) 처리

NULL과 NA를 헷갈리는 경우가 많은데 다릅니다.

의미
NA결측치 (Not Available) — 값이 있어야 하는데 없음
NULL객체 자체가 없음
NaNNot a Number (0/0 같은 결과)
Inf무한대

결측치 확인·제거

x <- c(1, 2, NA, 4, NA)

is.na(x)              # FALSE FALSE TRUE FALSE TRUE
sum(is.na(x))         # 2 (결측치 개수)
x[!is.na(x)]          # NA 제외한 벡터

mean(x)               # NA (NA 포함하면 결과도 NA)
mean(x, na.rm = TRUE) # 2.333... (NA 무시 평균)

na.rm = TRUE거의 모든 통계 함수에 들어가요. ADsP 단골 인자.

결측치 대체

x[is.na(x)] <- 0   # NA 를 0으로 대체

또는 평균·중위값 대체:

x[is.na(x)] <- mean(x, na.rm = TRUE)

6. 기본 통계 함수

함수기능NA 영향
mean(x)산술평균NA 있으면 결과 NA
median(x)중위값동일
var(x)분산동일
sd(x)표준편차동일
cor(x, y)상관계수동일
summary(x)6수치 요약 (Min/1Q/Median/Mean/3Q/Max)NA 있으면 NA's 표시

→ 거의 다 na.rm = TRUE 인자 받습니다. 결측치 있는 데이터에서는 항상 추가하세요.

mean(x, na.rm = TRUE)
sd(x, na.rm = TRUE)
cor(x, y, use = "complete.obs")  # cor 는 use 인자

corna.rm 대신 use 인자 사용. "complete.obs" 는 NA 행 제거 후 계산.


7. 코드 읽기 연습 — 시험 단골 패턴

문제 1

v <- c(1, 2, 3, 4, 5)
v[v %% 2 == 0]

%% 는 나머지 연산자. 짝수만 → 2 4.

문제 2

df <- data.frame(x = c(1,2,3,NA,5))
mean(df$x)
mean(df$x, na.rm = TRUE)

→ 첫 결과 NA, 두 번째 (1+2+3+5)/4 = 2.75.

문제 3

x <- c("A", "B", "A", "C", "A")
table(x)

→ 빈도 집계: A=3, B=1, C=1. table() 은 도수분포표 함수.


자주 틀리는 5가지 패턴

1. 인덱스 0부터 시작 착각 파이썬 출신이 자주 실수. R은 1부터 시작.

2. NA 포함 평균 = 0 으로 착각 NA 포함하면 결과는 NA (0이 아님). na.rm=TRUE 추가 필요.

3. 음수 인덱스 의미 헷갈림 R 음수는 "제외", 파이썬 음수는 "뒤에서부터".

4. NA vs NULL vs NaN 혼동

  • NA: 결측치 (값 없음)
  • NULL: 객체 없음
  • NaN: 수학 정의 안 됨 (0/0)

5. factor 와 character 헷갈림 factor 는 범주형 (수준 levels 정해짐), character 는 자유 문자열. 회귀 분석에서 동작 다름.


시험장에서의 접근법

  1. R 코드 보면 한 줄씩 머릿속에서 실행: v <- c(1,2,3) → 벡터 생성
  2. 인덱싱 시 R은 1부터 라는 것 항상 상기
  3. 결측치 보이면 na.rm=TRUE 인자 확인
  4. 자료형 확인 함수(is.numeric, is.factor)와 변환 함수(as.numeric) 헷갈리지 말 것
R 직접 작성 능력은 필요 없어요. 코드 → 결과 시뮬레이션이 핵심. 이걸 위해 R 콘솔에서 5–10개 예제만 돌려봐도 충분합니다.

정리

  • R 인덱스는 1부터, 음수는 "제외"
  • 벡터: 같은 타입만, c() seq() rep()
  • 데이터프레임: 다른 타입 가능, $ 로 열 접근
  • NA: 결측치, 통계 함수에 na.rm = TRUE 필수
  • factor: 범주형 변수, levels 로 수준 지정
  • summary(): 6수치 요약, NA 개수 표시

ADsP 모의고사로 R 코드 문제 풀어보기 →


관련 글

직접 문제를 풀어보세요

매번 새로운 모의고사와 무한 풀이 모드로 실전 감각을 키울 수 있습니다.