튜토리얼

필수 데이터사이언스 방법론 가이드
카테고리는 수준별, 언어별, 분야별, 주제별 순으로 정렬되어 있습니다.

데이터 분석도구 R 기본기 익히기

작성자
DaeSeo
작성일
2017-01-12 11:16
조회
112
카테고리 : [ 초급   |   R   |   기타   |   기타 ]

1) 제목


데이터 분석도구 R 기본기 익히기

2) 작성자


컴퓨터정보통신공학과 박대서

3) 링크 및 출처


  • 2015년 12월 강원대학교 R 교육 자료, (주) 진심어린

  • http://timtack.tistory.com/20

  • http://blog.naver.com/1stwook/220660214050

4) 문제 및 개요


R 언어를 사용한 데이터분석 수행 이전에 기본적인 변수 유형과

데이터 로딩, 샘플링, 기본시각화 등에 대해서 소개

 

5) 데이터


s1

6) 해결방법 및 결과


변수 정의 방법

>변수(객체)명 작성방법

- 영문자로 시작

- 숫자 및 점, 언더바 기호 사용가능

- 대소문자 구분함

 

 

 

# 변수객체 정의

x <- 2

X <- 2

x1 <- 4

x22 <- 5

x.1 <- 6

x_1 <- 7

# 해당변수 조회·출력

x

X; x1

x22; x.1; x_1

 

결과 :

> x
[1] 2
> X; x1
[1] 2
[1] 4
> x22; x.1; x_1
[1] 5
[1] 6
[1] 7

 

# 변수객체 정의2
my <- 11
My <- 12
MY <- 13
mY <- 14
my51 <- 71
my.score <- 72
my_score <- 73
my22_ScoRE <- 74

# 해당변수 동시 조회·출력
my; My; MY; mY; my51; my.score; my_score; my22_ScoRE

 

결과 :

> # 해당변수 동시 조회·출력
> my; My; MY; mY; my51; my.score; my_score; my22_ScoRE
[1] 11
[1] 12
[1] 13
[1] 14
[1] 71
[1] 72
[1] 73
[1] 74

 

데이터 유형

데이터 유형(data type) > mode() 함수로 파악가능
구분 세부유형 예시
숫자형(numeric) 정수(integer)

실수(double)
33 또는 -55

38.3, 또는 -55.0
문자형

(character)
문자 또는

문자열
"홍길동"

"James Dean"

"언제 배송되나요?"
논리형

(logical)
참과 거짓 TRUE 또는 T

FALSE 또는 F
기타 결측치(Not Available, Missing Data)

비숫자(Not a Number)

무한대(Infinite)
NA

NaN

Inf 또는 –Inf
0/0

Inf – Inf

23/0
 

s2

 

데이터 객체 유형

데이터 객체유형 (data object type) > class() 함수로 파악가능
구분 데이터 개수 데이터 종류 관련코드
스칼라(scalar) 단수 숫자/ 문자/ 논리 중의 한가지 단수 데이터 x <- 3
벡터(vector) 복수 숫자/ 문자/ 논리 유형 중 한가지로만 구성 x <- c( )
행렬(matrix) 복수 숫자/ 문자/ 논리 유형 중 한가지로만 구성 x <- matrix( )
배열(array) 복수 숫자/ 문자/ 논리 유형 중 한가지로만 구성 x <- array( )
요인(factor) 복수 숫자/ 문자/ 논리 유형 중 한가지로만 구성 x <- factor( )
데이터프레임

(data frame)
복수 변수(열, 컬럼, 필드)별로
숫자/ 문자/ 논리 유형 중 한가지로만 구성
x <- data.frame( )
리스트

(list)
복수 스칼라부터 데이터프레임까지
모든 형태의 데이터를 포함할 수 있음
x <- list( )
 

데이터 객체유형 > 스칼라

- 구성인자가 하나인 벡터

s3

 

데이터 객체유형 > 벡터

- 동일한 유형의 데이터가 구성인자가 1개 이상이면서 1차원으로 구성되어 있는 데이터 구조

s4

 

데이터 객체 유형 > 매트릭스
- 행과 열로 구성된 2차원 데이터 구조이다.

- 데이터프레임과의 차이점은 모든 구성요소가 같은 데이터형태를 가져야함

s5 s6

 

데이터 객체유형 > 배열

- Matrix(행렬)는 동일한 데이터가 여러 행 들어가지만 2차원으로 저장

- 3차원(가로, 세로, 높이)의 형태로 저장해야 할 경우는 Array로 저장

- Array는 Matrix를 여러 층 쌓아 둔 형태

 

s7

 

데이터 객체 유형 > 데이터프레임

- 다른 데이터형을 가진 값을 분석해야 할 때 사용하는 것이 데이터 프레임

- 엑셀에서 표나 일반적인 데이터베이스에서 테이블에 데이터를 담아 놓고 사용하듯 R에서는 데이터프레임을 사용

- 데이터 프레임은 R을 이용하여 생성할 수도 있고 외부 파일에서 읽어와 생성할 수도 있음

s8

 

 

데이터 객체유형 > 리스트

list는 (키, 값) 형태로 데이터를 저장하는 벡터와 비슷한 형태

벡터와의 큰 차이점은 다른 유형의 데이터를 저장할 수 있다는 점

 

s9

 

데이터 로딩 및 기본 데이터 조회

- 결과 생략

s9

s9

 

샘플링 방법

s1

 

 

결과 :

s2

 

기본 데이터 특성 분석

s2

 

결과 : 일부 결과만 게시

s5

 

기술통계량 분석

# 비율척도변수의 기술통계량 구하기
min(my$total)
max(my$total)
range(my$total)
sort(my$total)
sort(my$total, decreasing=T)
mean(my$total)

# 비율척도변수의 기술통계량 구하기
min(my$price)
max(my$price)
range(my$price)
sort(my$price)
sort(my$price, na.last=T)
sort(my$price, na.last=T, decreasing=T)
mean(my$price)

min(my$price, na.rm=T)
max(my$price, na.rm=T)
range(my$price, na.rm=T)
mean(my$price, na.rm=T)

my$price
price2 <- na.omit(my$price)
price2
mean(price2)
round(mean(price2), 2)

# 등간척도변수의 기술통계량 구하기
min(my$survey)
max(my$survey)
range(my$survey)
sort(my$survey)
sort(my$survey, decreasing=T)
sort(my$price, na.last=T, decreasing=T)
mean(my$survey)

 

결과 :

s2

 

 

변수 변환

- attach()를 이용해 반복적인 변수명 생략

s1

 

데이터 기본시각화

check <- my$check

summary(check)

table(check)

plot(check)

plot(check, type="l")

plot(check, type="b")

plot(check, type="o")

plot(check, type="o", pch=5)

plot(check, type="o", pch=15)

plot(check, type="o", pch=15, col="blue")

plot(check, type="o", pch=15, col="blue", cex=1.3)

plot(check, type="o", pch=15, col="blue", cex=1.3, lwd=2)

abline(h=5)

abline(h=1)

abline(h=5, col="red", lwd=2)

abline(h=1, col="red", lwd=2)

s1

 

barplot(check)

barplot(table(check))

boxplot(check)

hist(check)

hist(table(check))

pie(check)

pie(table(check))

s4

 

 

데이터 전처리

# check 변수의 전처리를 통한 my테이블 정제

my2 <- subset(my, my$check == 12)

my2

my3 <- subset(my, my$check == 12 | my$check == 7)

my3

my3[order(my3$check),]

my3[order(-my3$check),]

my4 <- subset(my, my$check >= 1 & my$check <= 5)

my4

my4[order(my4$check, my4$total),]

my4[order(my4$check, -my4$total),]

 

# check 변수의 전처리를 거친 my테이블의 저장

write.csv(my4, "myclean.csv")

write.csv(my4, "myclean.csv", quote=F)

write.csv(my4, "myclean.csv", quote=F, row.names=F)

sink("out.csv")

my4

sink()