제 1절 R 기초
1. 분석환경의 이해
가. R의 특징
• 그래픽 처리
• 데이터 처리 및 계산 능력
• 패키지
라. R 언어와 문법
1) R의 데이터 구조: 벡터, 행렬, 데이터 프레임
(a) 벡터
• 벡터 데이터 구조는 하나의 스칼라값, 혹은 하나 이상의 스칼라 원소들을 갖는 단순한 형태의 집합
• 벡터 데이터에 들어갈 수 있는 데이터 타입: 숫자, 문자, 논리 연산자
- 벡터 데이터에 숫자만 있는 경우: 숫자형 벡터
- 벡터 데이터에 문자만 있는 경우: 문자형 벡터
- 벡터 데이터에 논리 연산자만 있는 경우: 논리 연산자 벡터
- 문자형벡터와 숫자형 벡터가 결합이 될 경우, 합쳐진 벡터는 문자형 벡터가 된다.
• R에서 다루는 구조 중에서 가장 단순한 형태이며, c
*를 이용하여 선언가능
• 기본적으로 R에서 벡터를 생성할 때에는 열백터가 만들어진다.
*c : connection
※ 행렬과 벡터의 원소들은 모두 동일한 데이터 타입을 가져야만 한다. 만약, 원소 중에 문자열 데이터가 있다면, 나머지 모든 원소들도 문자열 데이터로 변환된다.
※ R은 대문자와 소문자를 구문하여 인식함
※ 값의 할당: =
, <-
> x <- c(1,10,24,40)
> y = c("apple", "banana", "orange")
> z = c(TRUE, FALSE, FALSE)
(b) 행렬
• 행렬: 행과 열을 갖는 mxn 형태의 직사각형에 데이터를 나열한 데이터 구조
• 행렬의 선언: 명령어 matrix
- 첫번째 인수: 행렬에 들어가는 데이터들을 묶어놓은 벡터가 할당
- 두번째 인수: ncol/nrow
(1) ncol
: 열의 수를 지정 (defalut)
(2) nrow
: 행의 수를 지정
- 기본적으로 값들은 열을 우선 채우는 방향으로 입력이 됨
- 만약 행을 우선 채우는 방향을 원할 경우, byrow=T
옵션을 추가함
> mx = matrix(c(1,2,3,4,5,6), ncol=2)
> mx
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
• rbind
, cbind
명령어
(c) 데이터 프레임
• 데이터 프레임:
- 행렬과 유사한 2차원 목록 데이터 구조
- 다루기 쉽고 한번에 많은 정보를 담을 수 있어서 R에서 가장 널리 사용됨
- 행렬과 다르게 각 열이 서로 다른 데이터 타입을 가질 수 있음
- data
, frame
을 이용하면 여러 개의 벡터를 하나의 데이터 프레임으로 합쳐 입력할 수 있음
> income = c(100, 200, 150, 300, 900) # 숫자형 벡터
> car = c("kia", "hyundai", "kai", "toyota", "lexus") # 문자형 벡터
> marriage = c(FALSE, FALSE, FALSE, TRUE, TURE) # 논리형 벡터
> mydat = data.frame(income, car, marriage) # 데이터 프레임으로 합치기
> mydat
income car marriage
1 100 kia FALSE
2 200 hyundai FALSE
3 150 kai FALSE
4 300 toyota TRUE
5 900 lexus TRUE
2) 외부 데이터 불러오기: csv, txt, xls/xlsx 파일
(a) CSV 파일 불러오기
• read.table
명령어를 사용하면 csv 파일을 불러올 수 있음
- 옵션1) header=T
: csv 파일의 첫 줄을 변수명으로 지정
- 옵션2) sep=','
: 데이터가 쉽표로 구분된 데이터 파일임을 지정
※ read.table
명령어를 이용할 때에는 파일 경로에 \가 아닌 \\를 사용해야 함.
• read.csv
명령어
• 예시
data <- read.table("D\\DATA\\example.csv", header=T, sep=",")
3) R의 기초 함수
(1) 수열 생성하기
• rep(a, b)
함수: 첫 번째 인수를 두 번째 인수만큼 반복하는 숫자 벡터를 생성
> rep(1,3)
[1] 1 1 1
• seq()
함수
- 아무런 옵션이 없는 경우, 첫 번째 인수부터 두 번째 인수까지 1씩 증가하는 수열을 생성
- 옵션 1) by=n
: 첫 번째 인수부터 두 번째 인수까지 n씩 증가하는 수열을 생성
- 옵션 2) length=m
: 전체의 수열의 갯수가 m개가 되도록 자동적으로 증가하는 수열 생성
※ seq(a,b)
명령어는 간단하게 a:b
로 쓸 수 있음
# 간단한 seq의 예
> seq(1,3)
[1] 1 2 3
# seq를 간단히 쓸 때
> 1:3
[1] 1 2 3
# seq의 옵션인 by의 예시
> seq(1,11, by = 2)
[1] 1 3 5 7 9 11
# seq의 옵션인 length의 예시
> seq(1,11, length=11)
[1] 1 2 3 4 5 6 7 8 9 10 11
(2) 기초적인 수치 계산
• R에서는 기본적으로 벡터와 벡터 간 사칙연산이 가능하며, 이때 반드시 벡터 간의 길이는 동일해야한다.
• 간단한 행렬과 관련된 연산들
- t(matrix)
: matrix의 전치행렬을 계산함
- %*%
: 두 행렬간 행렬곱을 실시
- *
: 단순한 스칼라곱
- solve(matrix)
: matrix의 역행렬을 계산
• 통계처리와 관련된 함수들
- mean(list)
: 입력한 벡터의 평균값 계산
- var(list)
: 입력한 백터의 분산 계산
- sd(list)
: 입력한 백터의 표준편차 계산
- sum(list)
: 입력한 벡터터들의 합 계산
- median(list)
: 입력한 백터들의 중앙값 계산
- cov(list1, list2)
: 서로 다른 두 벡터에 대한 공분산 계산
- cor(list1, list2)
: 서로 다른 두 벡터에 대한 상관계수 계산
- summary(list)
: 주어진 벡터에 대해 각 사분위수와 최소값, 최대값, 평균값을 계산함
4) 데이터 핸들링
• <vector>[n]
: 벡터 데이터 내에서 앞에서 n번째 원소에 해당하는 값을 추출
• <vector>[-n]
: 벡터 데이터 내에서 n번째 원소만 제외한 나머지 원소들을 추출
• <vector>[n1, n2]
: 벡터 데이터 내에서 n1번째와 n2번째 원소에 해당하는 값을 추출
• <matrix>[m,n]
: 행렬 데이터 내에서 m행 n열에 존재하는 원소를 추출
• <matrix>[m,]
: 행렬 데이터 내에서 m행 데이터를 모두 추출
• <matrix>[,n]
: 행렬 데이터 내에서 n열 데이터를 모두 추출
• <matrix>[-m,]
: 행렬 데이터 내에서 m행을 제외한 나머지 데이터를 추출
• <matrix>[,-n]
: 행렬 데이터 내에서 n열을 제외한 나머지 데이터를 추출
5) 반복 구문과 조건문
6) 사용자 정의 함수
7) 반복 구문과 조건문
• paste
- 입력받은 문자열을 하나로 붙여줌
- sep=
옵션을 통해 붙이고자 하는 문자열들 사이에 구분자를 삽입시킬 수 있음
> numeric=1:10
> alphabet=c("a","b","c")
> paste(numeric, alphabet)
[1] "1 a" "2 b" "3 c" "4 a" "5 b" "6 c" "7 a" "8 b" "9 c" "10 a"
> paste(numeric, alphabet, sep=" to the ")
[1] "1 to the a" "2 to the b" "3 to the c" "4 to the a" "5 to the b" "6 to the c" "7 to the a" "8 to the b"
[9] "9 to the c" "10 to the a"
•substr
- 주어진 문자열에서 특정 문자열을 추출하는 기능
- 복잡하거나 길게 추출되는 결과를 간소하게 줄일 수 있음
- 데이터셋을 일정한 규격으로 정제하는데에 유용하게 사용할 수 있음
> substr("1234567890",1,4)
[1] "1234"
> contry=c("Korea", "Japan", "China", "Singapore","Russia")
> substr(contry,1,3)
[1] "Kor" "Jap" "Chi" "Sin" "Rus"
• 자료형 데이터 구조 변환
※R에서의 객체의 데이터 형태: 문자형 변수, 실수형 변수, 논리 연산자, Factor, 데이터 프레임
- 아래의 명령어를 통해 주어진 객체의 데이터 형태를 변환할 수 있음
- as.data.frame(x)
: 데이터 프레임 형식으로 변환
- as.list(x)
: 리스트 형식으로 변환
- as.matrix(x)
: 행렬 형식으로 변환
- as.vector(x)
: 벡터 형식으로 변환
- as.factor(x)
: Factor 형식으로 변환
- as.integer(x)
: 실수 x를 정수형 데이터로 변환
- as.numeric(x)
: 주어진 문자형 데이터를 수치형 벡터로 변환
(a) 만약, 문자와 같이 숫자로 변환할 수 없는 경우, NA가 뜸
(b) 논리형 데이터를 수치형으로 변환하는 경우, FALSE → 0 그리고 TRUE → 1
- as.character(x)
: 주어진 데이터를 문자형 데이터로 변환하는 경우
- as.logical(x)
: 주어진 데이터를 논리형 데이터로 변환
(a) 0인 경우에만 FALSE를 반환
(b) 그 이외의 모든 경우에 대해서는 TRUE로 반환
•문자열을 날짜로 변환
- 문자열을 날짜로 변환하는 함수는 크게 2가지로 나누어진다: Sys.Date()
, as.Date()
- Sys.Date()
: 현재 날짜로 반환
- as.Date()
: 날짜 객체로 반환
(a) 기본적으로 as.Date()
에 입력되는 문자열의 형식은 "yyyy-mm-dd"이다.
(b) 만일 "mm/dd/yy"의 형식일 경우 다음과 같은 옵션을 지정해주어야 한다: 'format=%m/%d/%Y'
> as.Date("2015-01-13")
[1] "2015-01-13"
> as.Date("01/13/2015")
Error in charToDate(x) : 문자열이 표준서식을 따르지 않습니다
> as.Date("01/13/2015", format='%m/%d/%Y')
[1] "2015-01-13
•날짜를 문자열로 변환 : format("Data", "Format")
- format에서 옵션을 사용하면, 요일이나 날짜만 간단하게 추출이 가능하다
> format(Sys.Date(), '%a') # 요일을 출력 [1] "금" > format(Sys.Date(), '%b') # 월을 출력 [1] "11" > format(Sys.Date(), '%m') # 두자리 숫자로 월을 출력 [1] "11" > format(Sys.Date(), '%d') # 날짜를 출력 [1] "20" > format(Sys.Date(), '%Y') # 네자리로 된 년도를 출력 [1] "2020" > format(Sys.Date(), '%y') # 두자리로 된 년도를 출력 [1] "20"
마. R의 그래픽 기능
1) 산점도 그래프
• x변수와 y변수의 값을 한 눈에 알아볼 수 있도록 평면에 점을 찍어 표현한 그래프
• 산점도 그래프를 그리는 함수: plot(list_x,list_y)
2) 산점도 행렬
• 산점도 행렬: 여러가지 변수들에 대해서 각각의 산점도를 한 눈에 살펴볼 수 있도록 확장된 산점도 행렬
• 산점도 행렬 명령어: pairs()
- 옵션 1) main=
: 그래프의 최상단에 제목을 표기
- 옵션 2) pch=
: 그래프 상에 찍히는 점의 모양을 변경
- 옵션 3) bg=
: 산점도 행렬 간 데이터의 색상을 변경
3) 히스토그램과 상자그림
• hist(list, prob=T)
: 히스토그램을 plotting
- 옵션 1) prob=T
: 상대도수를 표시할 수 있도록 변경
• boxplot(list)
: list에 대한 상자 그림을 출력
'취미 > 자격증' 카테고리의 다른 글
[데이터분석 전문가/준전문가] 과목 4 - 1장 - R 기초와 데이터 마트 4 (0) | 2020.11.20 |
---|---|
[데이터분석 전문가/준전문가] 과목 4 - 1장 - R 기초와 데이터 마트 3 (0) | 2020.11.20 |
[데이터분석 전문가/준전문가] 과목 3 - 2 장 - 분석 마스터 플랜 (0) | 2020.11.18 |
[데이터분석 전문가/준전문가] 과목 3 - 1 장 - 데이터 분석 기획의 이해 (0) | 2020.11.18 |
[데이터분석 전문가/준전문가] 과목 1 - 3 장 - 가치 창조를 위한 데이터 사이언스와 전략 인사이트 (0) | 2020.11.17 |
댓글