공든탑앱 열기

R 기초와 출력 읽기

ADsP (데이터분석 준전문가) · R 기초와 데이터 마트 · 약 14분

쉽게 말하면

R 은 통계 분석용 프로그래밍 언어예요. 숫자 여러 개를 c( ) 로 묶은 것이 벡터, 엑셀 시트처럼 행과 열이 있는 표가 데이터 프레임이에요. 시험에는 R 코드와 출력이 나오고 '결과가 무엇인가'를 묻는 문제가 많아서, 기본 문법을 직접 쳐 보면 훨씬 쉬워져요.

시험용 정의

R 은 통계 계산과 그래프를 위해 만든 오픈소스 언어다. 값에 이름을 붙일 때는 <- 를 쓴다. 기본 자료구조는 벡터(한 가지 자료형의 1차원 묶음, c( )), 행렬(같은 자료형의 2차원, matrix( )), 배열(3차원 이상), 리스트(서로 다른 자료형·길이를 담는 묶음, list( )), 데이터 프레임(열마다 자료형이 달라도 되는 표, data.frame( ))이다. 인덱스는 1부터 세고, 빈 값은 NA(결측값), 아무것도 없음은 NULL 이다.

비유로 이해하기

벡터는 같은 종류만 담는 달걀판, 데이터 프레임은 열마다 담는 것이 다른 출석부다. 출석부의 이름 열은 글자, 점수 열은 숫자지만 한 열 안에서는 모두 같은 종류다. 달걀판에 귤을 하나 넣으면 모두 '과일'로 다시 분류되듯, 벡터에 글자가 하나 섞이면 숫자도 모두 글자가 된다.

자세히

먼저 알아 둘 말

말뜻
벡터같은 자료형 값을 한 줄로 묶은 것. R 의 가장 기본 단위
인덱스몇 번째 값인지 가리키는 번호. R 은 1부터
자료형숫자(numeric), 문자(character), 논리(logical, TRUE·FALSE) 등
결측값값이 비어 있음. R 에서는 NA

자료구조 다섯 가지

구조차원자료형만드는 함수
벡터1차원한 가지c( ), seq( ), rep( )
행렬2차원한 가지matrix( ), rbind( ), cbind( )
배열3차원 이상한 가지array( )
리스트1차원여러 가지 (원소마다 길이도 자유)list( )
데이터 프레임2차원열마다 다를 수 있음data.frame( )

자료형이 섞이면

벡터는 한 가지 자료형만 담으므로 섞어 넣으면 더 넓은 쪽으로 맞춘다. 순서는 문자 > 숫자 > 논리다. c(1, "2", TRUE) 는 모두 문자가 되어 "1" "2" "TRUE", c(1, TRUE, FALSE) 는 숫자가 되어 1 1 0 이다.

자주 나오는 인덱싱

식뜻
x[2]두 번째 값
x[-1]첫 번째만 빼고 나머지 (음수는 제외)
x[c(1, 3)]1번째와 3번째
x[x >= 80]조건이 TRUE 인 값만
df$score데이터 프레임의 score 열
df[2, ]2행 전체 (쉼표 뒤를 비우면 모든 열)
df[, "score"]score 열 전체 (쉼표 앞을 비우면 모든 행)
df[df$cls == "A", ]cls 가 A 인 행만

벡터 만들기

식결과
1:51 2 3 4 5
seq(1, 10, by = 3)1 4 7 10
rep(1:2, times = 3)1 2 1 2 1 2 (통째로 반복)
rep(1:2, each = 2)1 1 2 2 (하나씩 반복)
matrix(1:6, nrow = 2)2행 3열, 열부터 채운다. 행부터는 byrow = TRUE

시험에 이렇게 나와요

문법 자체보다 다른 개념 문제의 R 출력을 읽을 때 쓰인다

확인 문제

Q1. R 에서 x <- c(10, 20, 30) 일 때 x[1] 의 결과는?

  1. 오류
  2. 20
  3. 10
  4. 30
정답 보기

3번 10

R 의 인덱스는 1부터 센다. 0부터 세는 파이썬·C 와 다르다. x[1] 은 첫 원소 10이다.

Q2. x <- c(3, 6, 9, 12) 일 때 x[-2] 의 결과는?

  1. 3 9 12
  2. 오류
  3. 3 6 9
  4. 6
정답 보기

1번 3 9 12

음수 인덱스는 그 자리를 뺀다. 두 번째 6을 뺀 3 9 12.

Q3. c(5, "a", FALSE) 의 자료형은?

  1. 문자
  2. 논리
  3. 리스트
  4. 숫자
정답 보기

1번 문자

문자가 하나라도 있으면 모두 문자가 된다.

Q4. 열마다 서로 다른 자료형을 담을 수 있는 2차원 자료구조는?

  1. 데이터 프레임
  2. 벡터
  3. 배열
  4. 행렬
정답 보기

1번 데이터 프레임

행렬·배열·벡터는 한 가지 자료형만 담는다.

Q5. matrix(1:6, nrow = 2) 의 1행은?

  1. 1 2 3
  2. 2 4 6
  3. 1 3 5
  4. 4 5 6
정답 보기

3번 1 3 5

기본은 열부터 채워서 1열이 1 2, 2열이 3 4, 3열이 5 6. 1행은 1 3 5.

Q6. mean(c(2, NA, 4)) 의 결과는?

  1. 0
  2. 3
  3. 2
  4. NA
정답 보기

4번 NA

NA 가 섞이면 결과도 NA. na.rm = TRUE 를 주면 3.

Q7. rep(1:3, each = 2) 의 결과는?

  1. 1 2 3
  2. 1 2 3 1 2 3
  3. 1 1 2 2 3 3
  4. 2 4 6
정답 보기

3번 1 1 2 2 3 3

each 는 원소를 하나씩 반복, times 는 통째로 반복.

헷갈리기 쉬운 O·X

R 의 벡터 인덱스는 0부터 시작한다.

정답 보기

X 1부터 시작한다.

리스트는 서로 다른 자료형과 길이의 원소를 함께 담을 수 있다.

정답 보기

O

c(1, TRUE) 는 문자 벡터가 된다.

정답 보기

X 숫자와 논리가 섞이면 숫자가 되어 1 1 이다.

함께 보면 좋은 개념