본문 바로가기
Programming/R

[R #1] R 개요

by shiny_sneakers 2020. 5. 21.

- 교재

 '빅데이터 분석을 위한 R프로그래밍(김진성 저)'을 사용하고 있다. 두께나 구성이 전공책 수준인 것 같다. 출판사 홈페이지에 연습문제 솔루션과 실습용 파일들을 제공해주는 점은 전공책 이상인 것 같다. 이제 Chapter 1까지 보긴 했지만 굉장히 괜찮은 책 같다.

 

- 기본 제공 데이터 셋

 R에서는 기본으로 제공되는 데이터 셋이 있다. 'data()'함수를 실행하면 여러 종류의 데이터 셋이 있다. 객체로 되어있는지 "" 없이 데이터 셋 이름만 치면 바로 값이 나온다. 그리고 내가 값을 덮어씌울 수 있다.그렇게 되면 Rstudio를 재시작하지 않는 한은 다시 불러오지 못하는 것 같다.

women // 몸무게와 키 데이터프레임 출력
women <- "hihihi"
women // hihihi 출력

 

- 변수와 자료형

1. 변수

 변수의 역할은 특정한 값을 어떤 목적으로 사용하기 위해 메모리상에 저장하고 그곳의 이름을 정해두는 것이다. R에서의 특징은 모든 변수가 객체(Object)의 형태로 생성된다. 때문에 하나의 변수에 자료,함수, 심지어 이미지까지도 같이 저장할 수 있다. 

 

책에는 '변수.멤버'의 형태로 선언할 수 있다고 되어있는데 직접 해보니 아니다. 정확히 말하면 변수명에 '.'을 넣을 수 있다.

goods.code <- 'a001'
goods.name <- '냉장고'
goods // 'ERROR: 객체 goods를 찾을 수 없습니다'

그냥 점찍고 선언하는걸로는 'goods.code'와 'goods.name'사이에 메모리적으로 유의미한 관계는 없다고 봐야 할 것 같다. 

 

1) 스칼라 변수 : 자료의 수가 1개인 벡터

2) 벡터 : 1차원의 선형 자료구조 (C++에서 즐겨 쓰던 STL Vector와 같은 의미가 아닐까?)

 

2. 자료형

 기본 자료형에는 숫자(Numeric),문자(Character),논리(Logical),결측치(NA, NaN)가 있다.

 

- 'is.<자료형>(x)' 함수를 이용하면 변수 x가 해당 자료형인지 T/F값을 리턴해준다. 기본 자료형은 윗줄의 4개라고 되어 있는데 함수에 쓸 수 있는 자료형에는 integer,double,complex(심지어 복소수까지!),data.frame,factor 등이 있다.

 

- 'as.<자료형>(x)' 함수를 이용하면 변수 x를 해당 자료형으로 변환할 수 있다. 벡터의 경우 원소 중 하나라도 문자이면 모든 원소가 문자형으로 생성이 되기 때문에 기본 연산에 오류가 생길 수 있다. 이럴 때 자료형 변환을 한 후 원하는 연산을 할 수 있게 해줘야 한다.

x <- c(3,4,5,"6") // 원소 "6"이 문자(character)이기 때문에 x의 원소들은 모두 문자형이 된다.
a <- x * 3 // 문자 * 3의 연산을 할 수 없기 때문에 에러가 뜬다.
a <- as.numeric(x) * 3 // x의 원소를 숫자로 형변환 후 각 원소에 3을 곱하여 a에 저장한다.
a // [1] 9 12 15 18

- 'mode()' 함수는 자료형(자료의 성격), 'class()' 함수는 자료구조(메모리 구조)를 확인시켜주는 함수이다. 그런데 리턴 값을 보니 그냥 둘 다 비슷한 것 같다.

 

- Factor : 동일한 값의 목록을 범주(category)로 갖는 벡터 자료. 간단하게 원소의 종류와 개수를 저장한 자료라고 보면 될 것 같다.

x <- c('a','a','b','c','c','c','c') // 벡터x 생성
f <- as.factor(x) //x를 factor로 변환하여 f에 할당(원소의 종류는 a,b,c이고, 각각 2,1,4개씩 있다)
table(f)
//	f
//	a b c
//	2 1 4
f
//	a a b c c c c
//	Levels : a b c

어떤 데이터의 값들이 문자형일 때 factor를 통해 범주화하면 plot()을 통해 데이터 확인 하기에 용이하다.
Default는 Nominal(범주를 알파벳순으로 정렬)이며, 함수 factor( x,levels=c(<범주 순서>),ordered=T )를 통해 범주를 설정할 수도 있다.

ff <- factor(x, levels=c('b','c','a'), ordered=T) //범주를 b,c,a순으로
ff
//	a a b c c c c
//	Levels : b < c < a

여기서 궁금했던 점. 범주(levels)에서 하나를 빼거나 추가하면 어떻게 될까 테스트를 해 보았다.

fff <- factor(x, levels=c('b','c'), ordered=T) // a를 제거
fff
//	<NA> <NA> b c c c c
//	Levels : b < c  
//	- 범주를 정의 할 때 a를 제거하였더니 a가 <NA>로 바뀌었다.
table(fff)
//	b c
//	1 4 
ffff <- factor(x, levels=c('b','c','a','d'), ordered=T) // d를 추가
ffff
//	a a b c c c c
//	Levels : b < c < a < d
table(ffff)
//	a b c d
//	2 1 4 0    

- Date(날짜형) 데이터 처리 : 대부분의 입력 자료들은 문자형이기 때문에 정확한 날짜형으로 변환할 필요가 있다.

as.Date("20/05/21", "%y/%m/%d")
// [1] "2020-05-21"

앞의 문자는 입력 데이터. 뒤의 문자는 입력값의 표시 형식이다. 제어 문자는 y/m/d로 되어 있는데 결과는 2020-05-21로 되어있다. 이것으로 보아 날짜형 데이터는 기본적으로 "YYYY-MM-DD"형식으로 저장되는 것 같다. 원하는 대로 출력을 하려면 출력 함수가 필요하지 않을까 생각된다. 

as.Date() 함수는 날짜만 처리가 가능하지만 strptime() 함수는 날짜와 시간 모두 처리가 가능하다.

날짜

제어문자

시간

제어문자

4자리 연도

%Y

24시간

%H

2자리 연도

%y

12시간

%h

월 / 일

%m / %d

%M

월(영문)

%B / %b

%S

 

- 기본 함수

help(<함수명>), ?<함수명>은 함수에 대한 도움말을 보여준다.

args(<함수명>)는 함수의 argument를 보여준다.

example(<함수명>)은 R에서 제공하는 기본 함수의 예제를 보여준다.

 

 

 

 

 

 

 

공부 내용 포스팅을 오늘 처음 해봤는데 복습 효과가 좋은 것 같다. 그런데 생각보다 시간이 많이 걸리네...

롤 조금만 하고 자야지.

 

- Reference

 김진성, 빅데이터 분석을 위한 R프로그래밍』, 가메출판사(2018), p42-54.

'Programming > R' 카테고리의 다른 글

[R #6] 데이터 조작  (0) 2020.06.11
[R #5] 데이터 시각화  (0) 2020.06.06
[R #4] 제어문과 함수  (0) 2020.06.03
[R #3] 데이터 입출력  (0) 2020.05.27
[R #2] 데이터의 유형과 구조  (0) 2020.05.24

댓글