본문 바로가기
프로그래밍 언어/R

R 2. 데이터 분석 이전 기본 개념

by Jinger 2024. 1. 25.

서론

    데이터 분석하는 데 필요한 기본 개념인 변수, 함수, 패키지를 R에서 사용하는 방법에 대해 알아보자.


변수

    "변수(Variable)"란 값을 저장할 때 사용하는 식별자 혹은 데이터를 저장할 수 있는 메모리 공간으로 정의된다. 즉, 수학 시간에 배운 그 변수라고 생각하면 편하다. 사용하는 방법은 간단하다. 변수 이름과 "<-"(왼쪽 화살표) 대입 연산자 그리고, 넣을 값만 있으면 된다. 그리고 처음 시작할 때 변수를 미리 생성하는 것을 변수 선언, 변수에 값을 넣는 것을 변수 할당, 변수에서 값을 꺼내는 것을 변수 참조라 한다.

더보기

    변수 선언 시 왼쪽 화살표(<-) 대신 등호(=)를 사용해도 된다. 그러나 R에서는 등호가 변수를 만드는 것 외에도 다른 기능을 하기 때문에 변수를 만들 때 헷갈리지 않도록 화살표 기호를 사용하는 것을 권장한다.

    변수와 반대로 하나의 값으로만 되어 있는 고정된 값을 "상수(constant)"라고 한다. 일반적으로 여러 데이터들이 모이면 변수들의 덩어리이고 변수는 데이터 분석의 대상이 된다. 즉, 변수 간에 어떤 관계가 있는지 파악하는 것이다. 상수는 변수와 달리 분석 대상이 될 수 없다.

여러 값 대입

   변수에는 여러 개의 값을 넣을 수도 있다.

1."c()"함수는 변수에 여러 개의 값을 넣는 기능을한다. 괄호 안에 쉼표를 이용해 숫자를 나열하여 사용한다.

var1 <- c(1, 2, 4, 8, 16)	# 숫자 5개로 구성된 var1 생성

1-1. 콜론(:)을 이용해 시작 숫자와 마지막 숫자를 입력하면 1씩 증가하면서 연속된 숫자로 변수를 만들 수 있다.

var2 <- c(1:5)	# 1~5까지 연속 값으로 var2에 생성
var2

## [1] 1 2 3 4 5

2. "seq()"함수로도 연속 값을 지닌 변수를 만들 수 있다. 괄호 안에 시작 숫자와 마지막 숫자를 쉼표로 구분하여 입력하는 형태로 사용한다.

var3 <- seq(1,5)	# 1~5까지 연속 값으로 var3 생성
var3

## [1] 1 2 3 4 5

2-1. "seq()"의 "by"파라미터를 이용하면 일정한 간격을 두고 연속된 숫자로 된 변수를 만들 수 있다.

var4 <- seq(1, 10, by = 2)	# 1~10까지 2 간격 연속 값으로 var4 생성
var4

## [1] 1 3 5 7 9

    여러 값으로 구성된 변수로도 연산할 수 있다. 앞에 예시로 보여준 예시끼리의 연산 혹은 변수와 상수의 연산 모두 가능하다.

var1
## [1] 1 2 4 8 16

var1 + 2
## [1] 3 5 6 10 18

var2
## [1] 1 2 3 4 5

var1 + var2
## [1] 2 4 7 12 21

    문자도 마찬가지로 변수에 대입을 할 수 있다. 단, 문자임을 표시하기 위해 따옴표(")를 붙여야한다.

str1 <- "text"
str1
## [1] "text"

str2<- "Hello World!"
str2
## [1] "Hello World!"

str3 <- c("Hello", "World", "!")
str3
## [1] "Hello" "World" "!"

    숫자로 된 변수로는 연산할 수 있지만, 문자로 된 변수로는 연산할 수 없다. 단어들을 붙이거나 자르는 등 문자로 된 데이터로 분석 작업을 하려면 문자 처리 기능을 가지고 있는 함수를 이용해야 한다.

변수명명법

     변수의 이름은 사실 프로그래머 마음대로 짓어도 상관은 없지만, 좀 더 체계적인 프로그램을 만들기 위해 변수 이름에 대한 어느 정도 규칙이 존재한다.

  1. 의미를 담아 이름을 정한다.
  2. 변수명은 문자, 숫자, 대시(-), 언더바(_)를 조합해 정할 수 있다.
  3. 변수명의 첫 글자는 문자로 시작해야 한다.
  4. 프로그램은 대소문자를 구분한다. (pi!= pI!= Pi!= PI)

함수

   프로그래밍 언어에서 "함수(Function)"와 수학의 함수는 비슷하다. 하나의 목적을 위해 수행되는 코드를 묶어 사용하는 것이다. 이해하기 쉽게 튀김기에 어느 음식을 넣든 행동하는 것은 똑같지만, 나오는 음식이 다른 것과 같다. 함수는 기본적으로 반복적인 코드를 피하기 위해 사용된다. 그 결과 가독성이 좋아지고, 코드 길이가 간결해지며, 유지 관리가 쉬워지는 장점들이 있다. 특히, 데이터 분석은 "함수를 이용해서 변수를 조작하는 일"이다. 대부분의 분석 작업은 함수를 다루는 것으로 시작하고 끝난다. 그렇기에 함수들의 기능과 조작 방법을 익히고 능숙하게 다뤄야 데이터를 의도한 대로 분석할 수 있다.

   R에서 함수는 '함수 이름'과 '괄호'로 구성된다. 함수 이름을 쓰고 그 뒤에 괄호를 입력한 후 함수의 기능을 적용할 값이나 변수를 입력하면 된다. 앞에서 사용한 "c()"와 "seq()"가 함수의 예이다. 그 외 자주 사용하는 함수들을 살펴보자. 예시로 보여준 "seq()"의 "by"와 아래 예시의 "paste()"의 "collapse"는 함수의 옵션을 설정하는 명령어 "파라미터(parameter)" 혹은 "매개변수"라고 한다.

x <- c(1, 2, 3)
mean(x)	# x의 평균 구하기
## [1] 2

max(x)	# x의 최댓값 구하기
## [1] 3

min(x)	# x의 최솟값 구하기
## [1] 1

str <- c("Hello!", "World", "is", "good!")
str
## [1] "Hello!" "World" "is" "good!"

paste(strm collapse=",")	# str를 하나로 합치되 ","를 통해 단어들을 구분하기
## [1] "Hello!,World,is,good!"

   주의해야 할 점은 변수를 함수에 넣었다고 해도 변수가 변하는 것은 아니다. 그렇기에 변환된 값을 저장하고 싶으면 새로운 변수를 만들어 대입하자.

x_mean <- mean(x)
x_mean

## [1] 2

패키지

    "패키지(package)"란 함수나 변수 등을 모아 놓은 파일이다. 앞서 언급한 R 내장 함수 외에 외부 혹은 내장 패키지를 추가적으로 설치를 해야 사용할 수 있다.

패키지 설치 및 로드

   R에서 그래프를 만들고, 텍스트 데이터를 분석하고, 머신러닝 알고리즘을 구현하는 등 다양한 기능을 하는 함수를 이용할 수 있다. 함수를 이용하려면 먼저 함수가 들어 있는 패키지를 설치하고 불러들여야 한다. 예를 들어 가장 많이 사용하는  "ggplot2"가 있다.

   패키지 내의 함수를 사용하기 위해서는 패키지 설치, 패키지 로드, 함수 사용이라는 절차를 걸쳐야 한다. 패키지 설치는 한 번만 하면 되지만, 패키지를 로드하는 작업은 R 스튜디오를 새로 시작할 때마다 반복해야 한다.

   만약 함수를 사용하다가 파라미터나 문법이 기억나지 않거나 헷갈리다면 함수명 앞에 물음표(?)를 붙여 R 스튜디오의 Help 창에 매뉴얼이 나타난다.

추천 패키지

    대체로 R의 패키지는 R 홈페이지에서 검색이 가능하다. 아래 링크를 통해 접속을 했다면 Reference manual을 참고해 보자. 혹은 R Studio에서도 확인이 가능하다.

데이터 로드

  • RMySQL, RPostgresSQL, RSLite: 데이터베이스(DB)로부터 직접 데이터를 읽을 때 사용한다.
  • XLConnect, xlsx: 엑셀을 R로부터 직접 읽어올 수 있게 한다.
  • foreign: SAS, SPSS 데이터셋을 읽어올 때 사용한다.

데이터 핸들링

  • dplyr: 빠른 데이터 핸들링을 위하여 사용
  • tidyr: 데이터셋의 레이아웃을 바꿀 때 유용한 툴
  • stringr: 문자열 다루는 것과 정규 표현식 관련 툴
  • lubridate: date와 time을 더욱 다루기 쉽게 만드는 툴

데이터 시각화

  • ggplot2: 대표적인 시각화 툴
  • ggvis: 웹브라우저 기능 + ggplot
  • rgl: 3D 시각화를 위한 툴
  • googleVis: R에서 데이터 시각화를 위해 구글 차트를 이용할 수 있게 해주는 툴

모델링

  • lme4: 선형 혼합 효과 모형
  • nlme: 비선형 혼합 효과 모형
  • randomForest: 머신러닝 랜덤 포레스트
  • vcd: 범주형 데이터 시각화
  • glmnet: Lasso, elastic-net 회귀분석
  • survival: 생존 분석
  • caret: 회귀분석 및 분류 모델의 트레이닝

그 외

  • ggmap: Google map으로부터 street map을 다운로드하고, ggplot의 background로 쓸 수 있다.
  • maps: 맵에 다각형을 쉽게 그려주는 툴
  • Rcpp: 빠른 C++을 이용하여 R을 사용한다.
  • data.table: 데이터셋을 빠르게 조작하기 위한 다른 방법을 사용한다. 빅 데이터에 유용하다.
  • XML: R을 통해 XML 문서를 읽고 만드는 패키지
  • jsonlite: R을 통해 JSON 데이터를 읽고 만드는 패키지
  • httr: HTTP Connection을 통한 작업을 위한 패키지

주섬주섬

  • "#"는 주석을 의미한다. 주석은 코드를 설명하는 일종의 메모로, 코드를 실행할 때 아무런 영향이 미치지 않는다. 코드 이해를 위해 사용하는 것을 권장한다.
  • "##"은 코드를 실행해서 콘솔 창에 나타난 출력 결과를 의미한다.
  • 더 깊은 개념을 알고 싶다면 "R 13. 기타"를 참고 바란다.
  • 위 기본 개념은 상세히 들어가면 복잡할 수 있지만, 간단한 개념만 알고 넘어가자면 위의 내용만 기억해도 상관이 없다. 위 내용을 연습하고 싶다면 아래 접은 글을 참고 바란다.
더보기

연습 문제

1. 시험 점수 변수 만들고 출력하기

각 학생의 점수는 다음과 같다. [80, 60, 70 ,50, 90]

 

2. 전체 평균 구하기

 

3. 전체 평균 변수 만들고 출력하기

참고

 

R: The R Project for Statistical Computing

 

www.r-project.org

 

Posit

The best data science is open source. Posit is committed to creating incredible open-source tools for individuals, teams, and enterprises.

posit.co

 

R 13. 기타

서론 R에 대한 이해를 더 높이고자 개념에 대해 깊이 알아보자. 내장 함수 dplyr을 많이 사용하지만 기본적인 문법을 알아야 다른 사람의 코드를 이해할 수 있다. # 데이터 불러오기 exam = 50]# 1반이

jinger.tistory.com

 

반응형

'프로그래밍 언어 > R' 카테고리의 다른 글

R 6. 데이터 정제하기  (0) 2024.01.30
R 5. 데이터 가공하기  (0) 2024.01.29
R 4. 데이터 파악하기  (2) 2024.01.27
R 3. 데이터 프레임  (1) 2024.01.26
R 1. R 들어가기 앞서  (0) 2024.01.23

댓글