본문 바로가기
컴퓨터 COMPUTER/Urban Data Analytics 데이터분석

[R 기초] 기초 연산자와 데이터 타입/자료형의 종류

by 매실이 maesiri 2020. 12. 26.

R 기초 연산자와 데이터 타입/자료형의 종류

 

지난 학기 R조교를 하며 배운 R 기초 연산자와 자료형에 대해 정리해보았습니다. 파이썬이나 자바, C언어와 비슷하면서도 factor의 사용 같이 조금 생소한 부분도 있었습니다. ㅠ

 

처음 접하시는 분들에게는 한번 쭉 따라해보는 것이 기초 데이터 타입의 이해에 큰 도움이 되리라 생각합니다.

(자료형은 데이터타입을 직역한 것으로 한국어로는 자료형이라고도 많이 말해요!)

 

1. 기초 연산자 (+ - * / )

1. 기초 연산자 (+ - * / ) 

각 데이터 타입의 특징을 알기 위해서는 기초 연산자에 대한 이해가 선행되어야 합니다.

콘솔에 아래 코드를 한 줄씩 입력해보면 기초 연산자가 어떤 역할을 하는지 바로 알 수 있는데, 아래 예시로 +-*/ 는 각각 덧셈, 뺄셈, 곱셈, 나눗셈, %는 나머지, %/% 는 정수 나눗셈을 한다고 볼 수 있습니다. 

1+5
1-5
5*36
9/4
9%/%4 

 

2. 대입 연산자 (Assignment Operator <- )

대입 연산자는 말 그대로 하나의 값을 하나의 변수에 대입할 때 쓰는 연산자입니다. 예를 들어 20이라는 값을 x에 대입하고 싶다면, 

x <- 20 이렇게 오른쪽에서 왼쪽으로 쓰면 됩니다. print(x)를 입력하면 x 에 20이라는 값이 대입되었음을 확인할 수 있습니다.

대입연산자에는  = 와 <- 가 있는데, R에서는 주로 <- 를 많이 사용합니다. 

<- 단축키는 윈도우에서는 Alt+ - , 맥에서는 Option + - 입니다. 

 

2. 기초 데이터 타입의 종류

1. 기초 자료형 

  • Numeric: 숫자로만 이루어진 값. 수학적 계산 가능
  • Integer: 정수. 수학적 계산 가능* x <- 12L 과 같이 끝이 L을 붙이면 integar 값으로 대입 가능
  • Characters/String: 따옴표에 들어있는 글자, 문장, 숫자. 텍스트로 취급
  • Logical: True/False 두가지로 이루어진 값, 논리값이라고도 부름

2. 벡터 Vectors

R에서 가장 흔히 쓰이고 기초적인 데이터 타입인 벡터.

값의 1차원 나열이며, 나열된 값들이 같은 데이터 타입을 가지고 있어야 합니다.

여러 값들을 하나의 vector로 묶으려면 c()함수를 사용하면 되는데, 예를 들어 10,20,30 숫자들을 하나의 벡터로 묶고 싶으면 아래와 같이 하면 됩니다.

x <- c(10,20,30)
print(x) 

y <- c("hi","my","name","is","chipmunk")
print(y)

 

벡터에 담긴 값을 원하는만큼 불러오거나 버릴 수 있습니다. 첫값부터 1,2,3,4 ... 값을 index (순서) 라고 생각하시면 됩니다. 예를 들어, 위의 x[2]는 20입니다. 

 

벡터에 담긴 값들이 21보다 큰지 알아보고 싶다고 칩시다. 아래 코드의 첫줄은 x에 담긴 값들이 21보다 큰지 판단해서 논리값의 벡터를 x_large라는 변수에 대입합니다. 마지막 줄은 x_large의 자료형을 출력합니다.

x_large <- x>21
x_large
class(x_large)

 

벡터의 길이는 length(x)를 통해 알 수 있습니다. 

 

3. 매트릭스 Matrices

벡터가 1차원 배열이었다면, 매트릭스는 2차원 배열입니다. 따라서 행과 열이 있습니다. 새로운 매트릭스 형성은 matrix()를 이용, 행과 열의 수를 확인하고 싶으면 dim()을 이용하면 됩니다. 

 

예를 들어, 1부터 12까지의 숫자를 4행 3열 배열에 열부터 채워넣고 싶으면 아래와 같이 하면 됩니다. 그리고 dim을 통해 사이즈를 확인하고 m을 통해 값을 확인하면 됩니다. 만약 행부터 넣고 싶다면 matrix함수 안에 byrow=TRUE를 입력하면 됩니다.

x <- matrix(1:12, nrow=4, ncol=3)
dim(m)
m

4. 데이터 프레임 Data Frame

데이터 프레임 역시 2차원 배열 구조입니다. 다만 데이터 프레임에서는 각 행 (가로줄)이 하나의 세트처럼, 그리고 그 행의 각 열에 속하는 값들은 그 행의 요소처럼 여겨집니다.  예를 들어,  아래 표처럼 각 열은 0부터 시작하는 Row ID를 가지게 되고, 각 열은 그 행을 설명하는 요소들이 됩니다. 

  Name Team ZIP code City Country
0 Hally A 62626 Champaign US
1 Bonji A 01010 Urbana US
2 Guru B 23232 Seoul Korea
3 Lindy C 22323 Tokyo Japan

5. 날짜와 시간 Date and Time

시계열분석을 하기 위해 반드시 알아야 할 데이터타입입니다. 

주로 Date는 POSIXct format 이라는 타입으로 저장합니다. 이 타입은 초, 분, 시간, 일, 월, 연도를 list로 저장합니다. lubridate 이라는 library를 먼저 install 하고 불러옵니다.

#설치 후 
library(lubridate) 
today()
now()
x <- c("2020-12-26")
x_date <- ymd(x)

ymd 말고도 myd, month, year 등 다양한 함수를 이용해서 내가 원하는 date 요소를 추출할 수 있습니다.

 

6. 리스트 List

리스트는 여러 타입의 값들을 묶을 수 있는 자료형입니다. 숫자, 글자 뿐만 아니라 벡터, 매트릭스도 하나의 리스트에 섞어 넣을 수 있습니다. 아래와 같이 list 라는 함수로 묶어주면 됩니다.

x <- c(10,20)
y <- c("hi","my","name")
z <- c(TRUE, FALSE, TRUE, TRUE)
xyzlist <- list(x,y,z,5)

리스트에서 내가 원하는 요소를 뽑을 때는 아까 벡터에서처럼 xyzlist[1] 해주면 되고, 첫 요소안의 첫 요소를 뽑고 싶다 하면 xyzlist[[1]][1] 이런 식으로.

 

7. 팩터 Factor

Factor 같은 경우는 값들이 연속적이지 않고 분류될 수 있도록 합니다. 내가 가진 매트릭스의 한 열이 전부 0,1,2,3 일 때 이걸 바로 그래프로 시각화 시키면 0-3 하나의 범주내에 그라데이션이 되지만 팩터로 변환해주면 0,1,2,3 으로 4가지로 카테고리화하여 보여주게 됩니다. 따라서 성별, 지역, 등급 등 정확하게 분리되는 고유한 값들이 있을 경우에 사용할 수 있습니다.

city <- c("seoul","tokyo","shanghai")
city <- factor(city) 
levels(city)

levels() 함수는 카테고리들을 알파벳 순서로 나열하여 보여줍니다.

 

8. Missing Value 

정보를 수집하다보면 가장 짜증나는게 빈 값들입니다. 어쩔 수 없이 빈 값들이 정말 많이 만나게 되는데, 빈 값들에도 3가지 종류가 있어 이를 제대로 구분하는 것이 중요합니다.

  • NULL : undefined 
  • NA : missing (Not Available)
  • NaN : 숫자가 아님

빈 값들이 있을 때 내가 가진 자료의 평균값, 총 값 등 간단한 계산도 안될 때가 많은데요.

이럴 땐

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

등등.. NA 값을 없애고 시작해야 합니다. 자세한 내용은 다음에 정리하겠습니다-!

 

여러가지 자료형을 알아보았는데, 실제로 코딩을 할 때는 내가 자료를 만들어쓰지 않고 다운로드에서 그걸 분석하는 경우가 많죠. 내가 받은 자료의 이 요소의 자료형을 모르겠을때! 아래와 같이 하면 됩니다. :D

3. 자료형 알아보는 방법

이미 값이 담긴 변수 x 가 있을 때 이 것의 자료형이 무엇인지 알고 싶을 때가 있습니다. 그럴 때 몇가지 방법이 있는데요, 1) class(x) 혹은 typeof(x) --> 자료형이 출력됨 2) 확인하고 싶은 자료형으로

is.numeric(x)

is.logical(x) 등등 입력해보면 됩니다.  --> True/False 논리값이 출력됨

 

도움이 되었길 바랍니다! ㅎㅎ

반응형