R?

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

- 오픈소스 프로젝트로 진행되고 있는 R은 통계 프로그래밍 언어인 S 언어 기반으로 만들어졌으며 통계 계산과 결과 생성 그래픽을 위한 프로그래밍 언어

- 객체지향형 x 절차지향형 o

- 코드를 만드는 것보다는 해결을 하기 위한 절차 지향형(주로 제공하는 라이브러리를 이용한다.)

- 데이터 프레임 구조를 가져온다.

- 백터 : 1차원 배열

- 배열 : 2차원 배열

- 리스트 : 다차원배열

- 데이터프레임구조 : 백터+배열+리스트

 

Nosql

- 빅 데이터 처리를 위한 비관계형 데이터베이스 관리 시스템(DBMS)

- 전통적인 관계형 데이터베이스 관리 시스템(RDBMS)과는 다르게 설계된 비관계형(non-relational) DBMS로, 대규모의 데이터를 유연하게 처리할 수 있는 것이 강점

- 노에스큐엘(NoSQL)은 테이블-컬럼과 같은 스키마 없이, 분산 환경에서 단순 검색 및 추가 작업을 위한 키 값을 최적화하고, 지연(latency)과 처리율(throughput)이 우수

- 대규모 확대가 가능한 수평적인 확장성의 특징

- NoSQL에 기반을 둔 시스템의 대표적인 예로는 아파치 카산드라(Apache Cassandra), 하둡(Hadoop), 몽고디비(MongoDB) 등

 

빅데이터 활용

- 미래예측

- 앙상블 기법(시장예측)

- 선호도 분석

- 사회적 분위기 파악

- 트렌드 감지 및 예측

 

빅데이터 분석 기법

1.연관규칙학습(Association Rule Learning)

- 상품 혹은 서비스간의 관계를 살펴 보고 유용한 규칙을 찾아 내고자 할 때

- cctv(백화점/마트)

 

2.유전 알고리즘(Genetic Algorithms)

- 환경, 생태계쪽에서 사용하는 방식

- 병렬적이고 전역적인 탐색 알고리즘

- 다윈의 적자생존 이론을 기본 개념으로 함

 

3.회귀분석(Regression Analysis)

- 두 변수 간의 관계에 분명한 방향이 있을 때

- 반응변수와 설명변수

- 혈압과 체질량 지수 

 

4.유형분석(Classification Tree Analysis)

- 사용자는 어떤 특성을 가진 집단에 속하는가? 와 같은 문제를 해결하고자 할 때 사용

 

5.기계학습(Machine Learning)

-  머신러닝에 관련된 학습

- 지도 학습 

- AI를 위한 기초 학습

- 학습용 데이터가 필요하다

 

6.소셜네트워크 분석(Social Network Analysis)

- 사회관계망 분석이라 불리는 소셜네트워크분석은 특정인과 다른 사람이 몇 촌 정도 인가?를 파악할 때 사용

- 오피니언 리더, 즉 영향력 있는 사람을 찾아 내 분석

 

7.감정분석(Sentiment Analysis)

 

R 설치방법

1. R 설치 방법

2. R 스튜디오 설치 방법

 

* 한글 형태소 분석을 하려면 JAVA가 필요함.

 

필요 자료 ▼

https://www.r-project.org 

 

R: The R Project for Statistical Computing

The R Project for Statistical Computing Getting Started R is a free software environment for statistical computing and graphics. It compiles and runs on a wide variety of UNIX platforms, Windows and MacOS. To download R, please choose your preferred CRAN m

www.r-project.org

* 관리자 권한으로 실행

 

 

명령어

기본적으로 설치된 패키지 보기

library(help="base")

 

설치되지 않은 패키지 설치하기

패키지 설치 위치

 

#배열을 x에 넣기

 

#백터 원소가 하나 일 때

 

#산술연산

 

seq()

1부터 3씩 증가하는 10이하 만들고 싶을 때

x <- seq(1,10, by=3)

1~10사이를 같은 간격으로 하는 5개의 숫자

y <- seq(1,10,length.out=5)

 

백터

rep()

x 백터를 2번 반복

rep(x, times=2)

x 백터의 각 원소를 2번 반복

rep(x,each=2)

 

백터의 원소

x <- c(1, 2, 3, 4, 5)

 

x[2]

# 두 번째 원소

x[c(1, 3, 5)]

# 1, 3, 5번째 원소

x[-c(2, 4)]

# 2, 4번째 제외한 원소

x[x2]

# 원소의 값이 2보다 큰 값들만 출력

x[x=2 & x=4]

# 원소의 값이 2 이상이고 4 이하인 값들만 출력

x[2] <- 20

# 2번째 원소의 값을 20으로 수정

x[c(3, 4)] <- 15  

# 3, 4번째 원소들의 값을 모두 15로 수정

x[x=15] <- 10

# 15 이하인 원소 값들을 모두 10으로 수정

 

함수를 이용한 백터 연산

x <- seq(1:10)

 

mean(x)

# x 벡터의 원소 값들의 평균

var(x)

# x 벡터의 원소 값들의

sd(x)

# x 벡터의 원소 값들의 표준편차

sqrt(x)

# x 벡터의 원소 값들의 제곱근

length(x)

# x 벡터의 원소 값들의 개수

abs(x)

# x 벡터의 원소 값들의 절대값

 

 

배열

array()

1~3까지의 정수를 1행 3열의 1차원으로 표시

x<- array(1:3,dim=c(3))  =  x <- seq(1:3)과 동일

 

1~6까지의 정수를 2행 3열의 2차원으로 표시

x<- array(1:6,dim=c(2,3))

 

x[1, 3]

# 13

x[, 3]

# 3열의 모든 값들

x[, -3]

# 3열을 제외한 모든 열의 값들

x[1, 2] <- 20

# 12열의 값을 20으로 수정

names <-

    list(c("1", "2"),

         c("1", "2", "3"))

# 행과 열 이름을 갖는 두 벡터로 하는 리스트 생성

 

행렬

행과 열로 구성 되는 2차원 배열

matrix()

1~6사이의 정수를 행의 수가 2인 행렬로 만듬

x <- matrix()

 

백터의 결합

 

리스트

 

함수 : list()

 

데이터 프레임

- 동일한 속성들을 가지는 여러 개체들로 구성

- 2차원적인 데이터 구조

- 속성들 간 데이터 유형은 서로 다를 수 있음

 

x<-data.frame(성명=c("홍길동","손오공"),나이=c(20,30),주소=c("서울","대전")

x<-cbind(x,학과=c("전산학","경영학")) <==데이터 프레임 x열(학과) 추가

x<-rbind(x,data.frame(성명="장발장", 나이=40, 주소 = "파리", 학과="전산학")) <==데이터 프레임 x에 행(장발장)추가

 

내장되어있는 데이트세트 출력

quakes <= R에 내장된 데이터 명 출력

 

head(quakes, n=10)

# 데이터의 앞부분 10개 행 보기(디폴트 n6)

tail(quakes, n=6)

# 데이터의 뒷부분 일부 보기(디폴트 n6)

names(quakes)

# quakes’ 데이터 세트의 변수명 보기

str(quakes)

# quakes’ 데이터 세트의 데이터 구조 보기

dim(quakes)

# quakes’ 데이터 세트의 차원 보기(행과 열의 수)

summary(quakes)

# quakes’ 데이터 세트의 각 변수별 데이터 요약 정보

summary(quakes$mag)

# quakes’ 데이터 세트 내의 mag 변수에 대한 최솟값, 25백분위수, 중앙값, 평균값, 75백분위수, 최댓값

 

 

데이터파일 저장 및 읽기

write.table(quakes,"C:/Rwork/quakes.txt",sep=",") =>파일 만들기

x<-read.csv("C:/Rwork/quakes.txt", header=T)  = > 파일 읽어 오기

x<-read.csv(file.choose(),header=T) = > 읽어 드릴 파일을 선택할 수 있는 창이 나타남

 

웹의 데이터파일 읽기

 

시각화

 

바차트

heigth<-c(9,15,20,6) #판매액 할당

name<-c("영업 1팀","영업2팀","영업3팀","영업4팀") #부서명할당

barplot(heigth,names.arg=name,main="부서별 영업 실적", col=rainbow(length(heigth)),xlab="부서",ylab="영업실적(억원)")#각부서별로 heigth값을 막대그래프로 출력

 

파이차트

x<-c(9,15,20,6) #영업 실적 할당

label<-c("영업 1팀","영업2팀","영업3팀","영업4팀") #부서명할당

pie(x,labels=label,main="부서별 영업 실적") #파이차트 출력(데이터, 라벨,제목)

 

 

 

작업순서

 

1. 작업하기전에는 반드시 작업할 디렉터리를 지정하고 작업시(분석할) 필요한 데이터들을 저장한다.

 

#아래와 같이 지정.

 setwd("c:\\r_temp")

#현재 설정된 작업 디렉터리 확인

getwd()

#또는 아래와 같이 지정

 setwd("c:\\r_temp") 

getwd()

 

2. 화면에 결과를 출력 - print()와 cat() 사용

print(1+3)

print('a') #문자열

print(pi,digits=3) # digits : 자리수 지정 가능

* 한 가지 값밖에 나오지 않는다.

 

cat() : 여러개의 데이터를 출력하는 함수

cat(1, ' : ', 'a','\n',2,':','b') #숫자와 문자 여러개를 한꺼번에 출력

1;2;3; #여러 개의 출력 명령을 연속적으로 실행할 경우, 세미콜론(;)을 사용

 

숫자형과 주요 산술 연산자

as.numeric( ) : 문자형 숫자를 연산 가능한 숫자로 변경하는 함수

 

문자형

전부 문자열 형태로 인식. ( “ “ 또는 ‘ ‘ 을 사용)

class( ) : 데이터 형을 반환 시켜주는 함수

 

논리값

데이터들을 비교해서 참일 경우, TRUE / 거짓일 경우, FALSE를 반환

컴퓨터 : bit를 사용하여 동작되는 기기.

bit : 0과 1, 두 가지 경우의 수만 존재.

bit 값 중에서 0은 거짓, 0 이외의 값은 모두 참.

 

두 개 이상의 값을 연산했을 경우, 참과 거짓을 찾지 위해 여러 가지 연산자가 존재.

& : 양쪽의 데이터가 모두 참일 경우에만 결과가 참. & 기호를 곱하기로 간주. (1 x 1 = 1, 1 x 0 = 0)

| : 두 값 중에서 한가지만 참이어도 결과는 참. | 기호는 더하기로 간주. (1 + 0 = 1, 1 + 1 = 1)

! : 해당 데이터가 아닌 것이라는 의미를 보유. NOT 라고 호칭

 

NA 형 & NULL 형

NA : 잘못된 값이 들어 올 경우 ( Not Applicable , Not Available, 결측값).

값이 있어도 정해진 범위 안에 있는 값이 아니라서 사용할 수 없는 경우.

NA 값이 포함되어 있을 경우 연상르 수행하면 결과 값은 NA.

 

is.na(변수명) : 변수의 값이 NA 인지를 확인하는 함수

 

cat(1,NA,2) #NA가 그대로 출력

cat(1,NULL,2) #NULL값이 제거 되고 출력

sum(1,NA,2) # NA를 더하니까 결과에 NA로 출력

sum(1,NULL,2)#NULL값은 제외해버리고, 나머지 값만 더해서 결과가 출력

 

*NA값은 연산에 그대로 반영되기 때문에 값은 수동으로 제거해야한다.

*na.rm : NA 값을 수동으로 제거할 수 있는 파라미터. na.rm=T (NA 값을 Remove)

sum(1,2,NA,na.rm=T)#na.rm=T으로 NA값을 제거하고 계산한다.

 

Factor 형

여러 번 중복으로 나오는 데이터들을 각각 모아서 대표 값으로 출력해주는 데이터 형

 

c( ) : combine value 라는 의미로 여러 개의 값을 한꺼번에 처리할 때 사용되는 함수.

 

# Factor 형

setwd("c:\\r_temp")

txt1<-read.csv("factor_test.txt")

txt1

factor1<-factor(txt1$blood)

factor1

summary(factor1)

gender_F<-factor(txt1$gender)

gender_F

summary(gender_F)

 

stringsAsFactors=FALSE : 데이터를 Factor 형태로 바꾸지 않고, 그대로 사용하고 싶을 경우.

 

날짜와 시간

 

Sys.Date() #대소문자 주의! 날짜만 보여주는 함수

Sys.time() #날짜와 시간까지 보여주는 함수

date()#미국식 날짜와 시간을 보여주는 함수

as.Date('2014-11-01')#홀따옴표나 겹따옴표를 사용

as.Date("01-11-2014",format="%d-%m-%Y")#날짜 형태를 지정

as.Date("2014년 5월 15일",format="%Y년 %m월 %d일")#날짜 형태를 지정

as.Date(10,origin="2014-11-10")#주어진 날짜 기준으로 10일 후의 날짜

as.Date(-10,origin="2014-11-10")#주어진 날짜 기준으로 10일 전의 날짜

 

class("2014-11-30") #문자로 확인

as.Date("2014-11-30") - as.Date("2014-11-01") #날짜로 변경해서 계산 

as.Date("2014-11-30")+5 # 5일 후 날짜 출력

+ Recent posts