본문 바로가기
카테고리 없음

[ADsP 정리] 3과목 1~2장 R 프로그래밍 기초

by 스타트업_디벨로퍼 2021. 2. 8.

1. R 소개

1. 분석환경의 이해

통계패키지 R

  • 오픈소스 프로그램으로 통계, 데이터 마이닝과 그래프를 위한 언어 ⇒ 통계 계산과 그래픽을 위한 프로그래밍 언어이자 소프트웨어 환경
  • 다양한 최신 통계 분석 및 마이닝 기능을 R 플랫폼에서 제공
  • 전 세계적으로 사용자들이 다양한 예제를 공유
  • 뉴질랜드 오클랜드 대학의 로스 이하카와 로버트 젠틀맨에 의해 시작되어 현재는 R코어 팀이 개발하고 있다
  • R은 GPL(General Public License)하에 배포되는 S프로그래밍 언어로 구현되어 GNU S라고도 한다
  • 다양한 최신 알고리즘을 제공해 다양한 시도 가능
  • 기능들의 자동화가 비교적 쉬움

분석 도구의 비교

R의 특징

  1. 표준 플랫폼(S언어 기반)
  2. 모든 운영체제에서 사용 가능(맥, 리눅스, 윈도우)
  3. 메모리 저장방식
  4. 객체지향언어이며 함수형 언어
  5. 오픈소스 프로그램으로 무료

R 스튜디오

  • 오픈소스이고 다양한 운영체제를 지원

  • R스튜디오는 메모리에 변수가 어떻게 되어 있는지 타입과 무엇인지를 볼 수 있고, 스크립트 관리와 도큐먼테이션이 편하다.

  • 메모리에 변수가 어떻게 돼있는지 타입이 무엇인지 볼 수 있고 스크립트 관리와 문서화가 편해 R studio 사용

  • 래틀과 R의 장단점

R 기반의 작업환경

  • 작업환경은 업무 규모와 본인에게 익숙한 환경이 무엇인지를 기준으로 선택
  • 기업환경에서는 64bit 환경의 듀얼코어, 32GB RAM, 2TB 디스크, 리눅스 운영체제를 추천
  • 가용 물리적 메모리 크기는 x86 64비트 시스템에서는 128TB가 한계 64비트 윈도우 운영체제에서는 8TB의 메모리까지 지원

2. R 기초

통계 패키지 R

R 스튜디오 구성화면

  • 스크립트 : R 명령어 입력하는 창. : 명령어를 실행할 때는 실행하려는 문장에 커서를 두고 Ctrl + Enter
  • 콘솔 : 스크립트 창에서 실행한 명령문이 실행되는 것을 볼 수 있는 곳. 오류 있으면 에러메시지 뜸. 명령어 직접 입력하면 저장 안돼 재실행 불가
  • 워크스페이스 : 할당된 변수와 데이터 나타남
  • Search Results : 설치된 패키지와 help 등 볼 수 있음

패키지

  1. 패키지 : R함수, 데이터 및 컴파일 코드의 모임
  2. 패키지 자동설치 : install.package("패키지명")
  3. 패키지 수동설치 : install.package("패키지명", "패키지위치")
  4. 패키지 도움말
    • library(help=AID) : 다운로드 된 AID패키지의 help 다큐먼트를 보여줌
    • help(package=AID) : 웹을 통해 AID패키지의 다큐먼트를 보여줌

프로그램 파일 실행

배치모드 기능

  1. 배치모드 : 매일 돌아가야 하는 프로그램을 시스템에서 프로세스를 자동으로 구동하는 작업을 할 때 유용

  2. 배치파일 실행 명령 : 윈도우 창에서 batch.R 실행파일이 있는 위치에서 $R CMD BATCH batch.R 실행

  3. Path 지정

    : 내 컴퓨터에서 오른쪽 마우스 클릭 → 속성 → 고급시스템 설정 → 환경변수 클릭 → 변수명이 path를 클릭 → R프로그램의 실행파일의 위치를 찾아서 추가 → 저장

변수와 벡터 생성

변수 다루기

  1. R에서는 변수명만 선언하고 값을 할당하면 자료형태를 스스로 인식하고 선언한다
  2. 화면에 프린트하고자 할 때, print()를 사용해도 되지만, 변수 값만 표현해도 내용을 출력해준다
  3. 변수에 값을 할당할 때는 대입연산자(<-, <<-, =, -> , ->>)를 사용할 수 있으나 <- 를 추천한다
  4. 메모리에 불필요한 변수가 있는지 확인하기 위해서는 Is() 를 활용하고 삭제는 rm() 을 활용한다
  • R기초 중에 기초
  • R 프로그램 소개

기본적인 통계량 계산

  1. 평균 mean()
  2. 중간값 median()
  3. 표준편차(Standard deviation) sd()
  4. 분산(variance) var()
  5. 공분산(covariance) cov()
  6. 상관계수(correlation number) cor()
  • 벡터의 연산
  • 벡터의 기초통계

함수의 생성 및 활용

  1. R은 함수형 언어이기 때문에 프로그래머가 직접 활용 가능한 함수를 생성하여 활용할 수 있다
  2. 함수는 function(매개변수1, 매겨분수2, ..) 선언하고, 표현식이 2줄 이상인 경우는 {} 로 묶어서 함수의 범위를 설정한다
  3. 표현식은 변수 할당, 조건문(if문)과 반복문(for문, while문, repeat문) 그리고 전달값(return)으로 구성된다
  • R 프로그래밍시 자주하는 실수

3. 입력과 출력

데이터 분석 과정

  • 분석자가 분석 목적에 맞는 적절한 분석 방법론을 선택해서 정확한 분석을 통해 얻은 결과를 통찰력을 가지고 해석함으로써 분석 과정을 마치게 된다
  • 데이터 핸들링 : 입력된 데이터를 다양한 전처리 작업을 거쳐 분석이 가능한 형태로 재정리하는 것

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

  • R에서 처리할 수 있는 데이터 타입

    : Tab-delimited text, Comma-separated text, Excel file, JSON file, HTML/XML file, Database, (Other) Statistical SW's file

     

  • R에서는 텍스트 마이닝 뿐만 아니라 데이터베이스와 다양한 통계 프로그램에서 작성된 데이터를 불러들여서 적절한 데이터 분석을 수행할 수 있다
  • R에서는 부동소수점 표현 시 7자릿수를 기본으로 세팅되어 있으며 option() 함수에 a digit="숫자" 를 지정해서 자릿수를 변경할 수 있다
  • 파일에서 문자를 출력하고자 할 때 cat("출력할 내용", file="파일명")
  • R에서는 역슬래쉬(\)를 인식하지 못하므로 슬래시(/) 또는 역슬래쉬 쌍(\\)으로 파일의 경로를 지정한다

외부 파일 입력과 출력

  • 고정자리 변수 파일 read.fwf("파일명", width=c(w1, w2, ..))
  • 구분자 변수 파일 read.table("파일명", sep="구분자")
  • csv 파일 읽기 read.csv("파일명", header=T)
  • csv 파일 출력 write,csv(데이터 프레임, "파일명")

웹페이지(web page)에서 데이터 읽어오기

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

R에서의 자료형태(mode)

벡터(Vector)

  • 벡터의 모든 원소는 동질적 ⇒ 같은 자료형 또는 같은 모드
  • 위치로 인덱스 된다
  • 인덱스를 통해 여러 개의 원소로 구성된 하위 벡터를 반환할 수 있다
  • 벡터 원소들은 이름을 가질 수 있다

리스트(Lists)

  • 이질적 ⇒ 여러 자료형의 원소들이 포함 가능
  • 위치로 인덱스 된다
  • 인덱스를 통해 하위 리스트를 추출할 수 있다
  • 리스트의 원소들은 이름을 가질 수 있다

벡터와 리스트의 차이 벡터에서 모든 원소는 같은 모드 리스트는 원소들이 다른 모드여도 OK

데이터 프레임(data frames)

  • 강력하고 유연한 구조 ⇒ SAS의 데이터셋을 모방해서 만들어진다
  • 데이터 프레임의 리스트의 원소는 벡터 또는 요인
  • 그 벡터와 요인은 데이터 프레임의 열
  • 벡터와 요인들은 동일한 길이
  • 데이터 프레임은 표 형태의 데이터 구조, 각 열은 서로 다른 데이터 형식을 가질 수 있다
  • 열에는 이름이 있어야 한다

그 밖의 데이터 구조

  • 단일값(scalars) : 원소가 하나인 벡터로 인식/처리
  • 행렬(matrices) : 차원을 가진 벡터로 인식/처리
  • 배열(arrays) : 3차원 또는 n차원까지 확대된 행렬
  • 요인(factors) : 고유값(value)이 요인의 수준(level)로 구성된 벡터(범주형 변수, 집단 분류)

[ 벡터, 리스트, 행렬 다루기 ]

  • R에서 활용하는 벡터, 리스트, 행렬 코드

벡터 다루기

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

리스트 다루기

  • 리스트 원소 선택 L[[n]] L[["name"]] L$name

행렬 다루기

  • 행렬은 R에서 차원을 가진 벡터이며, 텍스트마이닝과 소셜네트워크 분석 등에 활용
  • 행렬 설정 dim(vec)<-c(2,3)
  • 행과 열 이름 붙이기 rownames(mtrx)<-c("lowname1","lowname2",...) colnames(mtrx)<-c("colname1","colname2",...)

데이터프레임 다루기

  • 열 데이터(변수)로 데이터 프레임 만들기 dfm<-data.frame(v1,v2,v3,f1,f2)

    dfm<-as.data.frame(list.of.vectors)

  • 데이터 프레임 내 데이터 선택

    dfm[[1]] dfm[["name"]] dfm$name dfm[1,] dfm[,1]

  • 데이터 프레임 결합 rbind() : 두 데이터프레임의 행 쌓기 cbind() : 두 데이터프레임의 열 이어붙이기 merge() : 행 정렬 안 되거나 동일한 순서로 안 나타나도 상관없음

  • 데이터 프레임 추출 subset() : 데이터세트에서 조건에 맞는 내용 조회 (리스트와 벡터에서도 선택 가능)

  • R에서 활용하는 데이터 프레임 코드

자료형 데이터 구조 변환

데이터 구조를 다른 구조로 바꾸고 싶을 때 변환 적용 안 되면 NA값 나타남

  • as.data.frame(x) : 데이터프레임 형식으로 변환
  • as.list(x) : 리스트 형식으로 변환
  • as.matrix(x) : 행렬 형식으로 변환
  • as.vector(x) : 벡터 형식으로 변환
  • as.factor(x) : 팩터(factor) 형식으로 변환
  • as.numeric(논리값) : FALSE=0, TRUE=1
  • as.character(숫자) : 숫자를 문자로

5. 데이터 변형

주요 코드

반응형