R
mac 에서 utf8관련오류
1 | #teminal |
각 R 언어 해석
1 | #temminal |
R언어 문제풀이
1 | #1 |
R데이터 속성
숫자형, 문자형, 논리형, 특수값으로 변수의 자료형타입임,
Null 정의되어있지 않음을 의미
NA 결측값(missing value) (데이터가 찾을려고해도 없어!)
NaN 수학적으로 정의가 불가능한 값(ex sqrt(-3))
Inf 양의 무한대, -Inf 음의 무한대
80,70만있거나 홍길동, 손오공만 있으면 무슨 타이틀을 알수없다.
이 타이틀을 부여해준것이 리스트임
배열에 가로로읽는건지 세로로읽는 데이터인지 알수없음.
데이터 프레임은 리스트+배열 같이 합친 데이터(단, 각 열별로는 데이터타입이 같아야함.)
(만약 숫자만 있는 열에 문자를 집어넣는다면 전부 문자형으로 변환됨)
- 리스트가 여러개 모여있거나
- 리스트 + 배열
리스트와 데이터 프레임의 차이
데이터 프레임은 행과 열이 동일하게 구성되어있으며 그 이상의 자유도를 갖지 못합니다
예를 들면 첫번쨰 열은 3개의 요소, 두번째 열은 5개 요소로를 가질수없으며, 한개의 열이 3개의 요소만 갖는다면 나머지 열 또한 3개의 요소만 가질수있다
반면 리스트는 첫번쨰 자리는 1개의 값, 두번쨰 자리는 3개의 값.. 각 자리마다 가질수있는 요소가 다양함
백터의 이해
백터의 개념
1차원 배열 데이터 (1행에 데이터가있다)(1학년 학생들의 몸무게 자료)
ex) 몸무게 > 56|67|85|65|56|49
2차원 배열 데이터 (행과열이 존재)(국가별 GDP)
ex) 우리가 익히 아는 엑셀 데이터, DB
리스트(시험)
1 | # 리스트에 각 요소에 이름 지정해주기 |
리스트는 각 리스트에 요소가 한개 또는 여러개도 저장이 가능하다 (벡터와 다른점)
리스트를 생성하면 안의 요소들은 자동으로 또 하나의 리스트로 처리된다고 생각하자
1 | x<-list("kk","dam", 1:5) |
백터 변수 만들기
c()를 사용하여 벡터 변수를 만들수있다
1 | x <- c(1,2,3) # 숫자형 벡터 |
벡터의 원소값에 이름 지정(시험)
1 | score = c(123,243,423,5234) |
백터에서 원소 추출 (시험)
1 | d <- c(1,2,3,4,5,6,6,7) |
벡터의 연산(시험)
기본적으로 벡터값을 연산은 벡터들의 길이가 같아야함
하지만 두 객체의 길이가 서로 배수관계가 있으면 짧은 벡터를 반복하여 자동으로 연산 실행됨
1 | mean(d[1:5]) #1~5번째 값들의 평균 |
매트릭스
매트릭스의 개념
- 1차원 데이터 : ‘몸무게’ 데이터와 같은 단일 주제의 데이터 → 벡터
- 2차원 데이터 : ‘키’, ‘몸무게’, ‘나이’ 와 같은 여러 주제의 데이터→ 매트릭스, 데이터 프레임
- 매트릭스(matrix): 데이터 테이블의 모든 셀의 값들이 동일핚 자료형
매트릭스와 데이터 프레임(data frame)차이
자료형이 다른 컬럼들로 구성(데이터프레임에 이름, 학번은 문자형, 나이는 숫자형 으로 가능했음)
하지만 매트릭스는 모든 데이터형이 같아야함
행열 만들기 (matrix함수사용하고 기본적으로 array의 2차원이 행열임)(시험)
1 | x <- matrix(1:6, nrow=2, ncol=5) #행 2개 열 5개 |
매트릭스에서 값 추출하기(시험)
1 | x[2,3] #x에서 2행 3열의 값을 가져옴 |
행열에 이름붙이기(시험)
1 | rownames(x) <- c("1행", "2행", "3행", "4행") #row name붙이는 함수 |
데이터 프레임(시험)
데이터 프레임
- 숫자형 벡터, 문자형 벡터 등 서로 다른 형태의 데이터를 2차원 데이터테이블 형태로 묶을 수있는 자료구조
- 외관상으로 매트릭스와 차이가 없지만 매트릭스는 동일한 자료형인 것만 가능, 데이터 프레임은 서로 다른 형태 가능
데이터세트(시험)
R에서 제공하는 실습용 데이터셋
1 | library(help=datasets) # 데이터 세트의 목록 보기 |
이외의 필요한 정보(시험)
1 | # 행과 열 방향 전환 |
자료 구조 확인
1 | class(iris) # iris 데이터셋의 자료구조 확인 |
파일 데이터 읽기/쓰기(시험)
1 | setwd("../Users/user_name/uinv_lecture/R language/") # 기본 작업 폴더 지정 |
조건문, 반복문, 함수(시험)
조건문
if else
1 | job.type <- "A" |
- if와 else 다음에 있는 중괄호 { }는 프로그래밍에서 코드블록이라고 부름
- 여러 명령문을 하나로 묶어주는 역할
1
2
3
4
5
6
7
8
9 old <- 20
if (old>25) {print("통과")}
else {print("비통광")}
#위에 코드처럼 짜면 불가능함.. else가 바로 나오면안되므로
old <- 20
if (old>25) {print("통과")
} else {print("비통광")}
#위에처럼... else가 맨 앞안됨
1 | a <- 10 |
- 논리합(OR): “+” 나 “또는”, R에서는 “|” >>>>or
- 논리곱(AND): “·” 나 “그리고”, R에서는 “&” >>>>>and
ifelse문
1 | a <- 10 |
반복문
for문
1 | for(i in 1:5) { |
for 문 안에 if문 사용
1 | for(i in 1:20) { |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 >#(시험)
>/ #나눗셈
>%% #나머지
>%/% #몫
>sqrt() #제곱근
>max() #파라미터에서 최댓값반환
>min() #파라미터에서 최솟값반환
>log() #로그취함
>abs() #절대값
>factorial() #팩토리얼 반환
>#변수명지정
>-, @는 불가능
>.,_ 사용하자
>#논리 연산지
><=
>>=
>==
>!=
>|
>&
iris에서 꽃잎의 길이에 따른 분류 작업(분류 시험)
1 | data(iris) |
while문
- while문은 어떤 조건이 만족하는 동안 코드블록을 수행하고, 해당 조건이 거짓일 경 우 반복을 종료하는 명령문
1 | sum <- 0 #반드시 초기화해야함 |
break
1 | #if문에 해당하면 속해있는반복문종료 |
next
1 | #if문에 해당하면 그 i 넘어감 |
apply() 함수 (꼭 알아두기)(시험)
반복 작업이 필요한 경우에는 반복문을 적용
반복 작업의 대상이 매트릭스나 데이터프레임의 행(row) 또는 열(column)인 경우는 for문이나 while문 대신에 apply() 함수를 이용할 수 있음
apply() 함수의 문법
1
apply(데이터셋, 행/열방향 지정, 적용 함수)
예시
(mean()함수는 평균구하는 함수)
1 | apply(iris[,1:4], 1, mean) # row 방향으로 함수 적용 #1이 행방향 |
함수
나머지 내장함수
1 | ##내장함수 |
사용자 정의 함수(시험)
사용자 정의 함수 문법
1 | 함수명 <- function(매개변수 목록) { |
예시
1 | mymax <- function(x,y) { |
예시2
1 | mydiv <- function(x,y=2) { #y 디폴트 2로 설정 |
함수가 반환하는 결과값이 여러 개일 때의 처리
1 | myfunc <- function(x,y) { |
사용자 정의 함수의 저장 및 호출
1 | setwd("d:/source") # myfunc.R이 저장된 폴더 (우리는 c:/temp 로 변경) |
조건에 맞는 데이터의 위치 찾기(시험)
- 데이터 분석을 하다 보면 자신이 원하는 데이터가 벡터나 매트릭스, 데이터 프레임 안에서 어디에 위치하고 있는지를 알기 원하는 때가 있음
- 예를 들어, 50명의 학생 성적이 저장된 벡터가 있는데 가장 성적이 좋은 학생은 몇 번째에 있는지를 알고 싶은 경우
- 이런 경우 편리하게 사용할 수 있는 함수가 which(), which.max(), which.min() 함수
1 | score <- c(76, 84, 69, 50, 95, 60, 82, 71, 88, 84) |
1 | idx <- which(iris$Petal.Length>5.0) # 꽃잎의 길이가 5.0 이상인 값들의 인덱스 |
자료
자료 구조
자료 특성에 따른 분류(시험)
- 범주형 자료(질적 자료)
- 크기 비교못함
- 성별, 혈액형
- 연속형 자료(양적 자료)
- 크기 비교 가능
변수의 개수에 따른 분류
- 단일변수 자료(열이 하나, 벡터하나로 표현가능)
- 다중변수 자료(많은 변수들로 구성, 열이 여러개, 메트릭스or데이터프레임사용)
단일변수 범주형 자료의 탐색(시험)
도수 분포표 작성
도수 분포표는 정한 구간에 해당하는 파라미터가 얼마나 있는지 파악할수있다.
도수 분포표 만드는 원리
- 자료의 개수를 센다. (55개)
- 자료 내에서 최대/최소값을 찾는다. (최대 180, 최소 162)
- 몇 개 구간으로 나눌지 결정한다. (5개 구간으로 설정) (x<-cut(weight, breaks= 5))
- 구간의 폭을 구한다. (구간폭=(최대값–최소값)/구간수, (180-162)/5=3.6, 따라서 4로 결정)
- 구간의 경계값(급의 경계값)을 구한다.
- 구간별 자료의 개수(도수)를 적는다.table(x)
1 | favorite <- c('WINTER', 'SUMMER', 'SPRING', 'SUMMER', 'SUMMER', |
막대그래프(시험)
- 학생 신장 55명에서 막대그래프까지 구하는것 문제(시험)
1 | ds <- table(favorite) |
원그래프
1 | ds <- table(favorite) |
숫자로 표현된 범주형 자료(색입히는것중요)
1 | #1=초록, 2=빨강, 3=파랑 |
단일변수 연속형 자료의 탐색
평균과 중앙값
- 평균은 그냥 평균, 중앙값은 자료의 값들을 크기순으로 일렬로 줄세웠을떄 중앙에 위치하는 값
- 절사 평균: 자료의 관측값들 중에서 작은 값들의 하위 n%와 큰 값들 의 상위 n%를 제외하고 중간에 있는 나머지 값들만 가지고 평균을 계산
1 | weight <- c(60, 62, 64, 65, 68, 69) |
사분위수(시험)
- 사분위수(quatile)란 주어진 자료에 있는 값들을 크기순으로 나열했을 때 이것을 4등 분하는 지점에 있는 값들을 의미
- 자료에 있는 값들을 4등분하면 등분점이 3개 생기는데, 앞에서부터 ‘제1사분위수 (Q1)’, ‘제2사분위수(Q2)’, ‘제3사분위수(Q3)’라고 부르며, 제2사분위수(Q2)는 중앙값 과 동일
- 전체 자료를 4개로 나누었기 때문에 4개의 구간에는 각각 25%의 자료가 존재
1 | mydata <- c(60, 62, 64, 65, 68, 69, 120) |
산포(시험)
- 주어진 자료에 있는 값들이 퍼져 있는 정도(흩어져 있는 정도)
- 분산(variance)과 표준편차(standard deviation)를 가지고 파악
- 분산: 평균에서 얼마나 떨어져있나?
- 자료의 분산과 표준편차가 작다는 의미는 자료의 관측값들이 평균값 부근에 모여있다는 뜻
1 | mydata <- c(60, 62, 64, 65, 68, 69, 120) |
히스토그램(연속형 변수에게만 적용하는 막대그래프)(시험)
- 히스토그램(histogram)은 외관상 막대그래프와 비슷한 그래프로, 연속형 자료의 분 포를 시각화할 때 사용
- 막대그래프를 그리려면 값의 종류별로 개수를 셀 수 이어야 하는데, 키와 몸무게 등 의 자료는 값의 종류라는 개념이 없어서 종류별로 개수를 셀 수 없음
- 대신에 연속형 자료에서는 구간을 나누고 구간에 속하는 값들의 개수를 세는 방법을 사용
- 히스토그램에서는 막대의 면적도 의미가 존재함
1 | cars |
상자그림(시험)
- 상자그림(box plot)은 상자 수염 그림(box and whisker plot)으로도 부르며, 사분위 수를 시각화하여 그래프 형태로 나타낸 것
- 하나의 그래프로 데이터의 분포 형태를 포함한 다양한 정보를 전달하기 때문에 단일 변수 수치형 자료를 파악하는 데 자주 사용
1 | dist <- cars[,2] # 자동차 제동거리(단위: 피트) |
다중변수 자료의 탐색
산점도(시험)
- 다중변수 자료(또는 다변량 자료): 변수가 2개 이상인 자료
- 다중변수 자료는 2차원 형태를 나타내며, 이는 매트릭스나 테이터 프레임에 저장하여 분석
- 산점도란 2개의 변수로 구성된 자료의 분포를 알아보는 그래프
1 | #산점도 |
상관분석과 상관계수(시험)
자동차의 중량이 커지면 연비는 감소하는 추세
추세의 모양이 선 모양이어서 중량과 연비는 ‘선형적 관계’에 있다고 표현
선형적 관계라고 해도 강한 선형적 관계가 있고 약한 선형적 관계도 있음
상관분석: 얼마나 선형성을 보이는지 수치상으로 나타낼 수 있다.
피어슨 상관계수(통계학에서 배운것)
- -1<r<1
- r이 1, -1에 가까울수록 x,y상관관계가 높음
1 | #상관분석과 상관계수 |
선그래프의 작성(시험)
1 | month =1:12 #자료입력 |
자료탐색 실습(시험)(매우중요)
- Boston Housing 데이터셋 소개
- 미국 보스턴 지역의 주택 가격 정보와 주택 가격에 영향을 미치는 여러 요소들에 대한 정보를 담고 있음, 총 14개의 변수로 구성이 되어 있는데, 여기서는 이중에 5개의 변수만 선택하여 분석, mlbench 패키지에서 제공
- 탐색적 데이터 분석 과정
1 | library(mlbench) |
데이터 전처리(시험x)(7장)
결측값
결측값의 개념 (NA)
결측값(missing value)은 데이터를 수집하고 저장하는 과정에서 저장할 값을 얻지 못하는 경우 발생
통계조사 응답자가 어떤 문항에 대해 응답을 안했다고 하면, 그 문항의 데이터값은 결측값이 됨
데이터셋에 결측값이 섞여 있으면, 데이터 분석 시 여러 가지 문제를 야기
성적자료에 결측값이 포함되어 있다면, 성적자료에 대한 합계 계산이나 평균 계산
등의 작업이 불가능
결측값의 처리 1: 결측값을 제거하거나 제외하고, 데이터를 분석
결측값의 처리 2: 결측값을 추정하여 적당한 값으로 치환한 후, 데이터를 분석
벡터의 결측값 처리
- 결측값의 특성과 존재 여부 확인
1 | z <- c(1,2,3,NA,5,NA,8) # 결측값이 포함된 벡터 z |
매트릭스와 데이터프레임의 결측값 처리
1 | # NA를 포함하는 test 데이터 생성 |
특이값
특이값의 개념
특이값(outlier)은 정상적이라고 생각되는 데이터의 분포 범위 밖에 위치하는 값들을 말하며, ‘이상치’라고도 부름
특이값은 입력 오류에 의해 발생하기도 하고, 일반인의 몸무게 자료에 씨름선수의 몸무게가 합쳐진 경우처럼 실제로 특이한 값일 수도 있음
제조 공정에서 불량인 제품을 선별하거나 은행거래 시스템에서 사기거래를 탐지할 때 사용하기도 함
데이터 분석에서는 특이값을 포함한 채 평균 등을 계산하면 전체 데이터의 양상을 파악하는 데 왜곡을 가져올 수 있으므로 분석할 때 특이값을 제외하는 경우가 많음
특이값이 포함되어 있는지 여부 확인
논리적으로 있을 수 없는 값이 있는지 찾아봄
ex) 좋아하는 색깔을 1~5로 표시하기로 했는데 7이 존재함
ex) 몸무게에 마이너스 값이 있음
상식을 벗어난 값이 있는지 찾아봄
ex) 나이가 120살 이상인 사람
상자그림(boxplot)을 통해 찾아봄
ex) 정상 범위 밖에 동그라미 표시가 있으면 특이값을 의미
특이값 추출 및 제거
1 | #상자그림을 통한 특이값 확인 |
데이터 정렬
벡터의 정렬
1 | # 정렬(sort)은 데이터를 주어진 기준에 따라 크기순으로 재배열하는 과정 |
매트릭스와 데이터프레임의 정렬
1 | head(iris) |
데이터 분리와 선택
데이터 분리
1 | sp <- split(iris, iris$Species) # 품종별로 데이터 분리 |
데이터 선택
1 | subset(iris, Species == "setosa") |
데이터 샘플링과 조합
- 샘플링(sampling): 통계용어로, 주어진 값들이 있을 때 그중에서 임의의 개수의 값들 을 추출하는 작업
- ▪ 복원추출, 비복원 추출
- ▪ 샘플링이 필요한 경우의 예: 데이터셋의 크기가 너무 커서 데이터 분석에 시간이 많 이 걸리는 경우에, 일부의 데이터만 샘플링하여 대략의 결과를 미리 확인하고자 할 때
- ▪ 복원추출: 한번 뽑은 것을 다시 뽑을 수 있는 추출 ex) 주머니에서 꺼낸 구슬을 도로 넣어 원상복구한 다음에 다시 구슬을 뽑음
- ▪ 비복원추출: 한번 뽑은 것을 다시 뽑을 수 없는 추출 ex) 한번 주머니에서 꺼낸 구슬 은 다시 넣지 않음
1 | #숫자를 임의로 추출하기 |
데이터 조합
조합(combination): 글자 그대로 주어진 데이터값들 중에서 몇 개씩 짝을 지어 추출 하는 작업
1 | combn(1:5,3) # 1~5에서 3개를 뽑는 조합 |
데이터 집계와 병합
데이터 집계
1.1 iris 데이터셋에서 각 변수의 품종별 평균 출력
▪ 2차원 데이터는 데이터 그룹에 대해서 합계나 평균을 계산해야 하는 일이 많음 ▪ 이와 같은 작업을 집계(aggregation)라고 함
▪ R에서는 aggregate() 함수를 통해서 사용 가능
1 | agg <- aggregate(iris[,-5], by=list(iris$Species), |
데이터 병합
병합(merge) : 분리된 데이터 파일을 공통 컬럼을 기준으로 하나로 합치는작업
1 | x <- data.frame(name=c("a","b","c"), math=c(90,80,40)) |
데이터 시각화(8장)
데이터 시각화 기법(시험)
데이터 시각화의 중요성
▪ 데이터 시각화(data visualization) : 숫자 형태의 데이터를 그래프나 그림 등의 형태 로 표현하는 과정
▪ 데이터 분석 과정에서 중요한 기술 중의 하나
▪ 데이터를 시각화 하면 데이터가 담고 있는 정보나 의미를 보다 쉽게 파악 ▪ 경우에 따라서는 시각화 결과로부터 중요한 영감을 얻기도 함
트리맵
GNI2014 데이터셋으로 트리맵 작성하기
- 사각타일의 형태로 구성되어 있으며, 각 타일의 크기와 색깔로 데이터의 크기를 나타냄
- 각각의 타일은 계층 구조가 있기 때문에 데이터에 존재하는 계층 구조도 표현
- treemap 패키지 설치 필요
- 예제 데이터셋 : treemap 패키지 안에 포함된 GNI2014. 2014년도의 전 세계 국가별 인구, 국민총소득(GNI), 소속 대륙의 정보를 담고 있음
1 | library(treemap) |
버블차트
- 버블 차트(bubble chart): 앞에서 배운 산점도 위에 버블의 크기로 정보를 표시하는 시각화 방법
- 산점도가 2개의 변수에 의한 위치 정보를 표시한다면, 버블 차트는 3개의 변수 정보 를 하나의 그래프에 표시(버블 크기까지!)
1 | st <- data.frame(state.x77) # 매트릭스를 데이터프레임으로 변환 |
모자이크 플롯
- 모자이크 플롯(mosic plot): 다중변수 범주형 데이터에 대해 각 변수의 그룹별 비율 을 면적으로 표시하여 정보를 전달
1 | head(mtcars) |
ggploy 패키지(시험)
- 지금까지는 그래프를 작성할 때 주로 R에서 제공하는 기본적인 함수들을 이용
- 보다 미적인 그래프를 작성하려면 ggplot 패키지를 주로 이용
- ggplot은 R의 강점 중의 하나가 ggplot이라고 할 만큼 데이터 시각화에서 널리 사용
- ggplot은 복잡하고 화려한 그래프를 작성할 수 있다는 장점이 있지만, 그만큼 배우 기 어렵다는 것이 단점
- ggplot2 패키지의 설치 필요
ggplot 명령문의 기본 구조
- 하나의 ggplot() 함수와 여러 개의 geom_xx() 함수들이 +로 연결되어 하나의 그래프 를 완성
- ggplot() 함수의 매개변수로 그래프를 작성할 때 사용할 데이터셋 (data=xx)와 데이 터셋 안에서 x축, y축으로 사용할 열 이름(aes(x=x1,y=x2))을 지정
- 이 데이터를 이용하여 어떤 형태의 그래프를 그릴지를 geom_xx()를 통해 지정 ex) geom_bar()
막대그래프의 작성
1 | library(ggplot2) |
히스토그램
1 | ggplot(iris, aes(x=Petal.Length)) + # 그래프를 그릴 데이터 지정 |
산점도의 작성
1 | library(ggplot2) |
상자그림
- 이상치, 특이치를 읽을 수 있음
- 줄이 평균값
1 | library(ggplot2) |
선그래프의 작성
1 | library(ggplot2) |
차원 축소(시험x)
워드클라우드(시험x)
워드클라우드의 개념
- 지금까지 숫자 형태의 데이터를 다루는 방법에 관하여 학습
- 분석 대상 데이터 중에는 숫자가 아닌 문자나 문장 형태의 데이터도 있음 ex) 이메일 내용이나 SNS 메시지, 댓글
- 워드클라우드(word cloud)는 문자형 데이터를 분석하는 대표적인 방법으로, 대상 데이터에서 단어(주로 명사)를 추출하고 단어들의 출현 빈도수를 계산하여 시각화하는 기능
- 출현 빈도수가 높은 단어는 그만큼 중요하거나 관심도가 높다는 것을 의미
한글 워드클라우드 준비
JRE 설치
2.2 워드클라우드 문서 파일 준비
- 워드클라우드를 작성할 대상 문서는 일반적으로 텍스트 파일 형태로 준비
- 파일의 끝부분 처리를 마지막 문장이 끝나면 반드시 줄 바꿈을 한 후 저장
- 파일을 저장할 때, [다른 이름으로 저장]을 선택하고 [그림 10-5]와 같이 인코딩을 ‘UTF-8’로 선택을 하여 저장
- 파일 이름이나 파일이 저장된 폴더 경로에 한글이 포함되어 있으면 파일을 읽을 때 에러가 발생하는 경우가 있으므로 파일을 저장할 때는 파일 이름을 영어로 설정
대국민 담화문의 명사 추출하기(시험문제)
1 | install.packages("wordcloud") |
워드 클라우드 실습(시험x)
1 | # Install |