study blog

R 기초 본문

R/1. R 기초

R 기초

ivo_lee 2020. 1. 6. 17:16

1. R 개요

1. R 라이브러리 중 java 기반으로 되어 있는 것들을 사용할 수 있도록 JDK를 먼저 설치해야 한다. 

2. R은 통계 계산을 위한 프로그래밍 언어이자 데이터분석 소프트웨어
   AT&T의 Bell연구소에서 S라는 통계언어의 문법부분 통계처리부분 참고해서 만들었다.
   1993년 통계학과 교수 로스 이하카(Ross Ihaka)와 로버트 젠틀맨(Robert Gentleman) 2명이 개발
    → 일반 사람들도 쉽게 통계적 데이터분석을 할 수 있도록 개발

3. R로 무엇을 할 수 있을까?
  - 통계분석 : 기초통계, 가설검정
  - 머신러닝 모델링: SVM, Random Forest, Deep Learning
  - 텍스트 마이닝: 문장속의 단어 빈도를 이용하여 글의 성향을 분석
  - 이미지분석, 사운드 분석

4. 데이터 분석을 할 수 있는 다른 패키지는 무엇이 있나요? (데이터 툴적인 측면에서 비교)
  - SAS, SPSS: 기능이 더 좋으나 유료  - R은 속도가 느림.
  - Excel: 무료이면서 통계처리가 가능하나 기능이 너무 빈약
  - R: 기능은 유료에 버금가면서 무료

5. 데이터 분석을 할 수 있는 다른 프로그래밍 언어는 어떤게 있나요?
  - R: 일반적으로 데이터 분석 후 결과를 어딘가에 Reporting 하거나 차트로 표현하는데 최적
  - Python: 데이터 분석 후 해당 결과를 다른 시스템에 연동시키는 목적으로 사용

6. R의 장점
  - 오픈소스: 무료로 사용가능
  - 오픈 소스 생태계: CRAN 사이트에서 여러 패키지를 공유 - 최신 분석 기법들을 손쉽게 이용할 수 있음
  - 프로그래밍 방식의 데이터 분석: 재현성을 확보할 수 있음

7. R 다운로드 
  CRAN에서 platform에 맞는 파일을 다운로드 후 설치
   →  windows 시스템에 설치할 때 로그인 아이디가 한글인 경우 설치 안됨 ( 영문 ID를 생성 후 설치)
  IDE (개발툴)이 필요함! RStudio를 다운로드해 설치

8. Rstudio 실행 → 화면구성 알아보기
  - Source창: 스크립트 파일을 생성해서 코드를 작성
  - Console창: 코드의 실행결과가 출력
  - Environment 창(환경창) : 코드 실행 시 사용된 변수의 값을 알려줌
  - 파일창: 현재 사용하는 폴더( working directory )를 확인할 수 있음
  
9. R 프로젝트를 생성
  - R프로젝트 생성 시 한글이 들어 있는 경우 오류가 발생할 수 있음
   프로젝트 명과 폴더명에 한글이 들어가지 않도록 처리
   프로젝트 생성 후 약간의 설정을 해 보자.
     - 줄바꿈 설정: global option  →  code →  soft-wrap R source files 클릭
     - 유니코드 인코딩 설정 (UTF-8):   "   → Saving  →  default text encoding → UTF-8
     - 프로젝트 옵션 : tool →  project option → code editing →  UTF-8

 


2. 변수 선언

# 변수명 설정

myResult    # camelcase notation   #관용적 표현 - 가능한 이 표현 이용하기 
MyResult    # pascal notation
my_result   # 아니면 이거 이용
myresult     # 어색한 표현 

 

# 변수 출력 - print와 cat 이용하기

print(myResult)   

print("결과값은 : " + myResult)    #오류! 문자열과 숫자는 더할 수 없음

 

여러 값을 출력하려면 cat() 이용 : 문자와 숫자 같이 출력

cat("결과값은:", myResult)

 

#출력형태 지정

options(digits=7)         # 설정: 몇자리로 숫자 자릿수 default값을 줄 것이냐 → 기본값은 7

sprintf("%.7f",result)    # .:소수부분. 소수점 7번째까지 소수로 출력하겠다 → 결과는 문자열로 출력되는 점 주의!!

sprintf("%.9f")         # 소수점 9자리까지 출력. 10번째에서 반올림.

 

# 멤버를 이용한 변수 선언

#한 제품에 대한 세 가지 속성을 변수로 나타낼 때 : 멤버형태로 변수 표현

goods.price = 3000

goods.code = "001"

goods.name = "냉장고"


3. Operator (연산자)

# 나누기: /

100/3    # 33.33333

 

# 몫 구하기: %/%

100 %/% 3    # 33

 

# 나머지 구하기: %%

100%%3      # 1

 

# 비교연산자: ==, !=

var1 = 3

var2 = 3

var1 == var2   # TRUE

var1 != var2    # FALSE

 

# 논리연산자: AND연산(&, &&), OR연산(|, ||)

1) & : 양쪽 값이 TRUE일 경우에만 TRUE, 그 이외에는 모두 FALSE 

TRUE & TRUE    # TRUE

TRUE & FALSE    # FALSE

FALSE & FALSE    # FALSE

 

2) | : 양쪽 값 중 하나라도 TRUE이면 TRUE 반환

TRUE | TRUE  # TRUE

TRUE | FALSE  # TRUE

FALSE | FALSE  # FALSE

 

3) &&, ||  : scalar 연산일 경우 &, | 와 동일하나, vector 연산일 경우 첫 번째 결과만을 출력한다. 

 


4. R의 Data Type

R에는 Data Type이 크게 2가지 존재한다. 
1. 기본 데이터 타입
2. 특수 데이터 타입 

 

1. 기본 데이터 타입

1) 숫자형(numeric) : 숫자로 되어있고, 정수형과 실수형을 의미한다.

100    # R은 기본적으로 우리가 일반적으로 사용하는 숫자들을 실수형으로 간주한다.

100L    # 정수형은 L을 붙여 구분

2) 문자형(character) : 하나 혹은 둘 이상의 문자의 집합을 말한다. '' 또는 ""로 표시한다.

3) 논리형(logical) : TRUE(T) , FALSE(F)로 표시한다.

R에서는 TRUE 또는 T로 표시하며, True, true와 같은 소문자를 포함한 형태로 사용하지 않는다.

4) 복소수형(complex)

4-3i

 

 

2. 특수 데이터 타입

1) NULL : 객체가 존재하지 않음을 지칭하는 객체

2) NA : Not Available. 결측치를 표현

3) NaN : Not Available Number, Not A Number. 연산할 수 없는 숫자를 의미.

sqrt(-3)

4) Inf : 양의 무한대, -Inf : 음의 무한대

 

 

3. Data Type의 우선순위 (중요!)

기본 데이터 타입 4개 우선순위: character > complex > numeric > logical

 

c(TRUE, 10,30)    # 1 10 30    #numeric으로 통일  

c(TRUE,10,30,"HELLO")   # "TRUE" "10" "30" "HELLO"  #character로 통일

 

 

4. 데이터 타입을 조사하기 위한 함수 - mode()

mode(100)  # numeric

mode(TRUE)  # logical

mode(sqrt(-3))  # numeric

mode(4-3i)   # complex

mode(NULL)  # NULL

 

 

5. 데이터 타입을 확인하기 위한 함수 - is 계열의 함수 

is.numeric(10)  # TRUE

is.integer(10)   # FALSE  # 겉으로 보기에는 정수처럼 보이지만 실수

is.integer(10L)  # TRUE

is.null(10)   # FALSE

 

 

6. 데이터 타입 변경 위한 함수 - as 계열의 함수

as.character(3.141592)    # "3.141592"

as.integer(3.141592)     # 3

as.logical(0)     # FALSE   #  0 제외한 모든 값은 TRUE로 간주

as.double("3.1415")   # 3.1415

 

Comments