본문 바로가기
TIL/데이터 사이언스

2021.9.3 TIL : R 기초 - 1

by yeon_zoo 2021. 9. 3.

이번 학기 데이터 사이언스 수업을 수강하면서 통계 프로그래밍 언어로 R을 사용하게 되었다. 이번 학기 머신 러닝 관련 수업들에서는 전부 python을 쓰기 때문에 데사 수업도 파이썬을 사용하길 바랬지만, 교수님이 파이썬은 다른 수업에서도 많이 배울 수 있고, 아직까지는 R언어를 사용하는 회사들도 많기 때문에 R을 다뤄보는 게 좋을 것 같다고 말씀하셨다.. (다른 수업에서 많이 배우는 거 들켜서 할말은 없음)

 

그래서 R 기초를 미리 배워두려고 한다. 

R과 R studio는 쉽게 다운로드 할 수 있다. 내가 참고한 것은 여기. 전에는 다운로드 해야 될 거 필요하면 설명 안 읽고 무작정 다운로드부터 받아보기 시작했는데, 그렇게 하니 기본 설정을 빼먹었다던가 하는 오류가 자주 나서 나중에 헤매는 경험을 많이 했다. 그래서 요즘엔 다운로드 받기 전에 구글링 부터 하는 편!

 

그리고 기초적인 프로젝트 셋업은 유투브에서 찾아보면서 했다. 사실 너무 간단해서 세팅이라고 할것도 없긴 했다. 

 

1. R의 기본 자료형

R에서 제공되는 자료형은 기본적으로 다른 언어들과 비슷했다. 

  • 숫자(정수형, 실수형)
  • 문자형("" 혹은 '' 사용)
  • boolean(TRUE, FALSE 혹은 T, F로 나타내줌)
  • DATE & TIME (Sys.Date() 이나 Sys.time() 등으로 이용 가능)

코드 한줄한줄 실행시키려면 Ctrl + 엔터(맥에서는 Cmd + 엔터), 그리고 파일 전체 코드를 실행시키려면 Ctrl + Shift + 엔터 (맥 : Cmd + Shift + 엔터)를 누르면 된다. 

(팁 : 쉽게 주석 처리하는 방법 - Cmd + Shift + C)

 

변수 저장은 다음과 같이 할 수 있다.

> data1 <- 30
> data1
> data2 <- "hello world"
> data2

위처럼 실행된 결과를 확인할 수 있다.

 

2. R의 데이터 구조

벡터(Vector) : 순수하게 같은 자료형의 데이터가 나열되어 있을 때

 - 가장 기본이 되는 자료형

 - 동일한 유형의 데이터가 1차원으로 구성

 - 벡터 중에서 구성인자가 1개인 것을 "스칼라" 라고 함

> V1 <- c(1, 2, 3)      	    #숫자형 벡터
> V2 <- c("Kim", "Lee", "Choi") #문자형 벡터
> V3 <- c(T, F, T)              #논리형 벡터

벡터로 만들 때는 c() 함수를 꼭 넣어줘야 하는데, 여기서 c는 combine에서 온 c이다. 

이렇게 오른쪽에서 생성된 벡터들을 확인할 수 있다. 

 

만약에 벡터에 서로 다른 자료형들을 넣어주게 되면 어떻게 될까?

> V4 <- c(10, T, "R Studio")
> V4

위의 코드처럼 벡터 안에 숫자형, 불리안형, 문자형을 같이 나오면 아래와 같이 나온다. 즉, 각각 고유의 형태가 아니라 문자형으로 통일되어서 나오는 것이다. 

만약 벡터 값으로 10과 True를 준다면 10과 1의 값으로 저장된다. 

 

c를 이용해서 내가 원하는 값을 직접 입력하여 넣어줄 수도 있지만, 규칙에 따라서 넣어줄때는 다른 함수를 이용해서 편하게 넣을 수도 있다. 

> x <- seq(1, 10)
> x

혹은 더 간단하게는 이렇게도 적을 수 있다.

> y <- 1:10
> y

만약 일률적인 숫자를 생성해주는 데 뭔가 규칙을 넣고 싶다고 하면 속성을 추가해주면 된다. 예를 들어, 1부터 10까지의 숫자를 쓰는데 4만큼 증가하는 리스트 형태로 만들고 싶다면 다음과 같이 적어주는 것이다. 

> v5 <- seq(1, 10, by = 4)
> v5
[1] 1 5 9

1부터 10까지의 숫자 중에서 일정한 간격으로 4개의 숫자를 고르고 싶다면 다음과 같이 해줄 수 있다.

> v6 <- seq(1, 10, length.out = 4)
> v6
[1]  1  4  7 10

 

같은 숫자를 반복하는 벡터를 만들거나, 벡터 자체를 반복하게 만드는 rep 함수도 있다. 

> x <- rep(1, 3)

> x
[1] 1 1 1

> y <- seq(1, 3)

> y
[1] 1 2 3

> rep(y, time = 3)
[1] 1 2 3 1 2 3 1 2 3

> rep(y, each = 3)
[1] 1 1 1 2 2 2 3 3 3

rep에는 time 이라는 속성과 each 라는 속성이 있어서 전체를 3번 반복하거나 각 요소에서 3번 반복하는 방법으로 벡터를 만들수도 있다. 

다른 언어에서 리스트의 인덱스 번호로 해당하는 값을 찾는 것처럼 R도 가능하다.

> fruits <- c("Apple", "Banana", "Melon", "Grape")

> fruits[2]
[1] "Banana"

> fruits[2:4]
[1] "Banana" "Melon" "Grape"

> fruits[c(2, 3)]
[1] "Banana" "Melon"

다른 언어들은 인덱스가 0번부터 시작하지만 R에서는 1번부터 시작한다. 

벡터를 인덱싱하는 방법도 위와 같다. combine의 c 함수를 이용해서 여러 인덱스의 값들을 같이 출력할 수도 있고, 혹은 어디서 부터 어디까지의 값을 함께 출력할 수도 있다. 

댓글