728x90
반응형
SMALL

1절 R 소개

1. 데이터 분석 도구의 현황

1) R의 탄생

- R은 오픈소스 프로그램으로 통계/데이터마이닝과 그래프를 위한 언어이다

- 최신 통계분석, 마이닝 기능 제공

- 많은 패키지가 업데이트됨

 

2) R의 특징

- 오픈소스 프로그램

- 월등한 그래픽 및 성능

- 시스템 데이터 저장 방식

- 모든 운영체제에서 사용 가능

- 표준 플랫폼 : S 통계 언어 기반

- 객체지향 언어이며 함수형 언어

 

3) R Studio

- 오픈소스 및 다양한 OS 지원

- 메모리의 변수 현황과 타입유형 인지 편리

- 스크립트용 프로그래밍

- 래틀(Rattle)은 GUI가 패키지와 긴밀하게 결합돼 있어 정해진 기능만 사용 가능. => 업그레이드 필수

 

2절 R 기초

1. 통계 패키지 R

1) 패키지(Package)

- 의미 : R함수와 데이터 및 컴파일된 코드의 모임

(C:\Program Files\R\R-4.2.3\library)

- 패키지 불러들이기

install.packages("패키지명") #패키지 설치
library(패키지명) #패키지 활성화

2) 프로그램 파일 실행

기능 R 코드 비고
스크립트로 프로그래밍된 파일 실행 source("파일명")  
프로그램 파일 sink(file, append, split)함수
: R코드 실행 결과를 특정파일에서 출력
file: cnffurgkf vkdlfaud
append: 파일에 결과를 덮어쓰거나 추가해서 출력
split: 출력파일에만 출력하거나 콘솔창에 출력(default는 FALSE로 파일에만 실행 결과 출력)
pdf() 함수
: 그래픽 출력을 pdf파일로 지정
예) pdf("a_out.pdf"), pdf("d:\data\R\a_out.pdf")
dev.off() 로 파일 닫기  

 

2. 변수와 벡터 생성

기능 R 코드
숫자(Number) integer, double
논리값(Logical) TRUE(T), FALSE(F)
문자(Character) "a", "abc"

 

3. R 기초 중에 기초

기능 R 코드 비고
출력하기 print()
: 한 번에 하나의 객체만 출력
cat()
: 여러 항목을 묶어서 연결된 결과로 출력. 복합적 데이터 구조(행렬, list 등)를 출력할 수 없음.
cmd에 변수나 표현식을입력\
예) print(a), cat("a", "b", "c")
변수에 값 할당 <-,<<--, =, -> Alt + '-' 시 자동 '<-' 입력됨
변수 목록보기 ls(), ls.str()  
변수 삭제 rm() 모든 변수를 삭제할 때 사용
예) rm(list=ls())
벡터 생성 c() 한 타입만 저장 가능
숫자와 문자가 섞여있으면 모든 원소는 문자로 저장됨.
R 함수 정의 function(매개변수1, 매개변수2,,,){
expr1, expr2,,,
}
<expr 특징>
- 지역변수: 단순히 값 대입만 하면 지역변수로 생성되며 함수 종료 시 삭제됨
- 조건부 실행: if문
- 반복 실행: for문, while문, repeat문
- 전역변수: <<-를 사용

 

4. R 프로그램 소개

기능 R 코드 비고
데이터 할당 a<-1, a=1  
화면 프린트 a, print(a)  
결합 x<-c(1,2,3,4)
x<-c(6.25, 3.14, 5.18)
x<-c(x,y,z)
x<-c("fee", "fie", "fun")
c함수는 문자, 숫자, 논리값, 변수를 모두 결합 가능하며 벡터와 데이터셋을 생성 가
수열 1:5
9:-2
seq(from=0,to=20, by=2)
seq(from=0,to=30, length.out=5)
seq(10,100,10)
콜론,seq함수를 사용하여 연속적인 숫자 생성.
seq함수는 간격과 결가값 길이 지정 가
반복 rep(1,time=5) //1 1 1 1 1
rep(1:4,2) //1 2 3 4 1 2 3 4
rep(c(1,2),2) //1 2 1 2
숫자나 변수의 값들을 time인자에 지정한 횟수만큼 반복
문자 붙이기 A<-paste("a","b","c",sep="-")
paste(A,c("e","f"))
paste(A,10,sep=" ") 
sep에 지정한 구분자고 문자열을 연결시켜줌
문자열 추출 substr("Bigdataanalysis",1,4) //Bigd  
논리값 a<-TRUE(T)
b<-FALSE(F)
 
논리 연산자 ==,!=,<,<=,>,>=  
벡터의 원소 선택 V[n] : 선택하고자 하는 자리수
V[-n] : 제외하고자 하는 자리
A<-c(1,2,3,4,5)
A[-2] // 1 3 4 5

 

5. 벡터의 연산

연산자 우선순위 표현방법
[ [[ 인덱스 a[1]
$ 요소 뽑아내기, 슬롯 뽑아내기 a$xoef
^ 지수 5^2
- + 단항 마이너스, 플러스 -2, +5
: 수열 생성 1:10
%any% 특수 연산자 %/% : 나눗셈 몫
%%: 나눗셈 나머지
%*%: 행렬의 곱
* / 곱하기, 나누기 3*5, 3/5
+ - 더하기, 빼기 3+5
== != <> <= >= 비교 3==5
! 논리부정 !(3==5)
& 논리 "and" TRUE & TRUE
| 논리 "or" TRUE | FALSE
~  
-> ->> 대입 3->a
= 대입 a=3
<- <<- 대입 a<-3
? 도움말  

 

6. 벡터의 기초통계

기능 R 코드 비고
평균 mean(변수) 변수의 평균 산출
합계 sum(변수) 변수의 합계 산출
중앙값 median(변수) 변수의 중앙값 산출
로그 log(변수) 변수의 로그값 산출
표준편차 sd(변수) 변수의 표준편차 산술
분산 var(변수) 변수의 분산 산출
공분산 cov(변수1, 변수2) 변수간 공분산 산출
상관계수 cor(변수1, 변수2) 변수간 상관계수 산출
변수의 길이 값 length(변수) 변수간 길이를 값으로 출력

 

3절 입력과 출력

1. 데이터 분석 과정

*INPUT(IMPORT) => ANALYSIS => OUTPUT(EXPORT)

- 분석자가 분석 목적에 맞는 적절한 분석 방법론을 선택해 분석을 통해 얻는 결과를 통할력을 갖고 해석함으로써 분석 과정을 마친다.

- 데이터 분석을 위해서는 설계된 방향으로 데이터를 정확하게 입력받는 것에서부터 시작될 수 있다.

- 입력된 데이터는 다양한 전처리 작업을 거쳐 분석가능한 형태로 재정리된다 => 데이터 핸들링

- 분석된 결과를 이해하기 쉽고 잘 해석할 수 있도록 생산하는 부분을 데이터 출력이라고 한다. 보고서의 형태로 정리되어 최종 의사결정자와 고객에게 전달됨으로써 통계분석은 종료된다.

 

2. R에서의 데이터 입력과 출력

입력 기능 R 코드
키보드로 데이터를 입력 1) 데이터 양이 적어 직접 입력 방법
c() //combine 함수
2) 데이터 편집기 활용
고정자리수 데이터 파일 읽기
(fixed-width file)
read.fwf("파일이름", widths=c(w1,w2,...,wn)
테이블로 된 데이터 파일 읽기
(변수 구분자 포함)
read.table("파일이름", sep="구분자")
CSV 데이터 파일 읽기
(변수 구분자는 쉼표)
read.csv("파일이름", header=T)
웹에서 data file 읽어오기
(변수 구분자는 쉼표)
read.csv("주소")
HTML에서 테이블 읽어 올 때 library(XML)
url <- 'http://www.example.com/data/table.html'
t <- readHTMLTable(url)
복잡한 구조의 파일 읽기
(웹 테이블)
lines <- readLines("a.txt", n=num)

 

출력 기능 R 코드
출력할 내용의 자리수 정의 R의부동소수점 표현 : 7자리로 표시
print(pi, digits=num),
cat(format(pi, digis=num),"\n")
options(digits=num)
파일에 출력하기 cat("출력할 내용", 변수, "\n", file="파일이름", append=T)
CSV 데이터 파일로 출력
(변수 구부자는 쉼표)
write.csv(행렬 또는 데이터프레임,"파일이름",row.names=F)

 

4절 데이터 구조와 데이터 프레임

1. 벡터(Vector)

1) 벡터들은 동질적이다. : 모든 원소는 같은 자료형 또는 같은 모드(mode)를 가진다.

2) 벡터는 위치로 인덱스 된다. : v[2]는 2번째 원소이다. index 1부터 시작

3) 벡터는 인덱스를 통해 여러 개의 원소로 구성된 하위 벡터를 반환할 수 있다. V[c(2,3)]은 V벡터의 2,3번째 원소로 구성된 하위벡터이다.

4) 벡터 원소들은 이름을 가질 수 있다.

V<-c(10,20,30); names(V)<-c("Moe","Larry","Curly")
V["Larry"] 

#출력결과
Larry
   20

 

2. 리스트(List)

1) 리스트는 이질적이다. : 여러 자료형의 원소들이 포함될 수 있다.

2) 리스트는 위치로 인덱스 된다. : L[[2]]는 L리스트의 2번재 원소이다.

3) 리스트에서 하위 리스트를 추출할 수 있다. L[c(2,3)] 은 L리스트의 2,3번째 원소로 이루어진 하위 리스트이다.

4) 리스트의 원소들은 이름을 가질 수 있다. L[["Moe"]]와 L$Moe는 둘다 "Moe"라는 이름의 원소를 지칭한다.

 

3. R에서의 자료형태(Mode)

객체 예시 모드(Mode)
숫자 3.1415 수치형(Numberic)
숫자 벡터 c(2,4,5,5.5) 수치형(Numberic)
문자열 "Tom" 문자형(Character)
문자열 벡터 c("Tom", "Yoon", "Kim") 문자형(Character)
요인 factor(c("A","B","C")) 수치형(Numberic)
리스트 list("Tom","Yoon","Kim") 리스트(List)
데이터 프레임 data.frame(x=1:3, y=c("Tomd","Yoon","Kim") 리스트(List)
함수 print 함수(Function)

 

4. 데이터프레임(Dataframe)

1) 데이터프레임은 강력하고 유연한 구조. SAS의 데이터셋을 모방

2) 데이터 프레임의 리스트의 원소는 벡터 또는 요인이다.

3) 그 벡터와 요인은 데이터 프레임의 열이다.

4) 벡터와 요인들은 동일한 길이이다.

5) 표 형태의 데이터 구조이며 각 열은 서로 다른 데이터 형식을 가질 수 있다.

6) 열은 이름이 있어야 한다.

b<-data.frame(empno=1:3, empname=c("Y","T","K"))

b[1]
#결과
empno
1     1
2     2
3     3

b["empname"] //만들 때는 ""없음. 조회할 때는 ""넣어야함
#결과
empname
1       Y
2       T
3       K

 

5. 그 밖의 데이터 구조들

1) 단일값(Scalar)

R에서는 원소가 하나인 벡터로 인식/처리

>pi
[1] 3.1415

>length(pi)
[1] 1

2) 행렬(Matrix)

R에서는 차원을 가진 벡터로 인식(2차원)

>a<-1:9
>dim(a)<-c(3,3)
>a
//출력결과
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

3) 배열(Array)

행열에 3차원 또는 n차원까지 확장된 형태

주어진 벡터에 더 많은 차원을 부여하여 배열을 생성

> b<-1:12
> dim(b)<-c(2,3,2)
> b

//출력결과
, , 1

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

, , 2

     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12

4) 요인(Factor)

벡터처럼 생겼지만, R에서는 유일값의 정보를 얻어내는데, 이 유일값들을 요인의 수준(Level)이라고 한다.

주로 범주형 변수, 집단부류에 사용한다.

=> 중복값 제거

> a<-c(1,2,3,2,4,5,3,6,6,7)
> factor(a)

//결과
 [1] 1 2 3 2 4 5 3 6 6 7
Levels: 1 2 3 4 5 6 7

 

6. 벡터, 리스트, 행렬 다루기

- 행렬은 R에서 차원을 가진 벡터이며, 텍스트마이닝과 소셜네트워크분석 등에 활용한다.

- 재활용 규칙(Recycle Rule) : 길이가 서로 다른 두 벡터에 대해 연산을 할 때, R은 짧은 벡터의 처음으로 돌아가 연산이 끝날 때까지 원소들을 재활용한다.

> a<-seq(1,6)
> b<-seq(7,9)
> a+b
[1]  8 10 12 11 13 15
> cbind(a,b)
     a b
[1,] 1 7
[2,] 2 8
[3,] 3 9
[4,] 4 7
[5,] 5 8
[6,] 6 9


5절 데이터 변형

 

728x90
반응형
LIST

+ Recent posts