'R' Data Load

1) csv 파일 불러오기

   - 명령어 read.table

     read.table("csv파일 경로", [header | seq ]

       * 파일의 경로는 \\ 또는 /를 사용한다.

       * header : T값을 입력하면 csv파일의 첫 줄을 변수명으로 지정할 수 있다.

       * seq : 데이터가 어떤 값으로 구분되어 있는지 지정해준다.

> data1 <- read.table("D:\\DATA\\example.csv", header=T, sep=",")

 

   - 명령어 read.csv

     read.table과 유사하지만, sep 옵션을 통해 구분자를 명시할 필요가 없다.

 

2) txt 파일 불러오기

   - 명령어 read.table에서 sep 옵션을 사용하지 않으면 txt파일을 불러올 수 있다.

   - 구분자를 명시하지 않았기에 txt파일 자체가 구분자나 형식 등을 잘 지켜서 작성되어 있어야 한다.

> data2 <- read.table("D:/DATA/example.txt")

 

3) 엑셀 파일(xls/xlsx) 불러오기

   가. 엑셀을 csv파일 형식으로 저장하여 1) csv 파일 불러오기 방식을 이용하는 방법 

   나. 엑셀 파일을 직접 불러올 수 있는 패키지를 설치하는 방법

> library(RODBC)    # 패키지 열기, "" 없는 것에 유의

> new <- odbcConnectExcel("c:\\data\\mydata")     # 엑셀파일의 경로 입력(확장자 생략)

> yourdata <- sqlFetch(new, "Sheet1")     # 엑셀파일의 워크시트 이름 입력(대소문자 구별)

> close(new)

 

Graphic Function

가. 산점도 그래프

   - x변수와 y변수의 값을 한눈에 살펴볼 수 있도록 평면에 점을 찍어 표현

   - plot(x, y) 또는 plot(y~x) 함수를 사용한다.

<산점도 그래프 예시, 출처:위키백과>

 

나. 산점도 행렬

   - 여러 가지 변수들에 대해서 각각의 산점도를 한눈에 살펴볼 수 있도록 확장된 산점도 행렬

   - pairs 명령어를 이용한다.

    ( 'main =' 옵션 : 최상단에 제목 표기 / 'pch =' 옵션 : 점의 모양 변경 / 'bg =' 옵션 : 데이터에 따른 색상 부여)

 

다. 히스토그램과 상자 그림

   - 히스토그램과 상자 그림을 통해 자료의 분포를 손쉽게 확인할 수 있다.

   - hist(x) 함수를 통해 히스토그램을 생성하며, 'prob=T' 옵션으로 상대도수로 변경이 가능하다.

      ( 기본적으로 세로축에 도수가 표기된다. )

   - 상자 그림은 boxplot(x) 함수를 통해 생성할 수 있다.

<상자 그림 예시, 출처:위키백과>

          

'R 프로그래밍' 카테고리의 다른 글

[R] General Function  (0) 2022.05.05
[R] R 프로그래밍 기초(2)  (0) 2022.05.03
[R] R 프로그래밍 기초  (0) 2022.04.29

R 기초함수

 1) 수열 생성

   - rep 함수(a, b) : a를 b번 반복하는 숫자벡터 생성

> rep ( 1 ,  3 )

[1]     1     1     1

   - seq 함수(a, b, [ by | length ]) : a부터 시작하여 b까지 1씩 증가하는 숫자벡터 생성

      * by : 숫자 n을 입력하여 n씩 증가하는 수열을 생성한다.

      * length : 숫자 n을 입력하여 전체 수열의 개수가 n개가 되도록 증가값을 자동으로 생성한다.

> seq ( 1 ,  3 )

> 1:3

[1]     1     2     3



> seq ( 1 ,  11 ,  by=2 )

[1]     1     3     5     7     9     11



> seq ( 1 ,  10 ,  length=4 )

[1]     1     4     7     10

   - rep 함수의 인자로 seq 함수를 사용할 수 있다.

> rep ( 2 : 5 ,  3 )

[1]     2     3     4     5     2     3     4     5     2     3     4     5

 

2) 벡터간 사칙연산

   - 연산하는 벡터의 길이가 같아야 한다.

> a=1:10

> a

[1]     1     2     3     4     5     6     7     8     9     10

> a+a

[1]     2     4     6     8     10     12     14     16     18     20

> a-a

[1]     0     0     0     0     0     0     0     0     0     0

> a*a

[1]     1     4     9     16     25     36     49     64     81     100

> a/a

[1]     1     1     1     1     1     1     1     1     1     1

3) 행렬곱과 역행렬

   - 행렬곱

      * 행렬 A(m, l)와 행렬 B(l, n)이 있을 때, 행렬곱 AB는 m x n 이 된다.   (이때, l 의 값이 같아야 한다.)

   - 전치행렬

      * 행과 열을 i, j로 표현할 때, i와 j 값이 같은 행렬 값들을 기준으로 뒤집은 행렬

      * 행과 열의 개수가 뒤바뀐다.

 

   - 역행렬

      * 행렬 A와 B가 'A x B = 1' 이 되는 관계에 있을 때, 행렬 B는 행렬 A의 역행렬이라 한다.

      * solve 명령어를 통해 역행렬을 계산할 수 있다.

> a=c(2, 7, 3)                # 숫자 벡터 a 생성 (3행 1열의 벡터)

> a

[1]     2     7     3



> t(a)                                # 전치행렬 (1행 3열의 벡터)

             [ , 1 ]     [ , 2 ]     [ , 3 ]

[ 1 ,  ]       2            7            3



> A= a%*%t(a)        # 행렬곱(%*%) (3행 3열의 벡터)

> A

             [ , 1 ]     [ , 2 ]     [ , 3 ]

[ 1 ,  ]       4           14            6

[ 2 ,  ]     14           49          21

[ 3 ,  ]       6           21            9



> A * 2       # 스칼라 곱(*)

             [ , 1 ]     [ , 2 ]     [ , 3 ]

[ 1 ,  ]       8           28          12

[ 2 ,  ]     28           98          42

[ 3 ,  ]     12           42          18



> solve(A)     # A의 역행렬

 

4) 기초 통계값 계산

   - mean / var / sd 함수 : 주어진 벡터의 평균, 분산, 표준편차를 계산

   - sum / median / log 함수 : 주어진 벡터의 합, 중앙값, 자연로그를 계산

   - summary 함수 : 주어진 벡터의 각 사분위수와 최소값, 최대값, 중앙값, 평균을 계산

        * 숫자 벡터 외의 벡터에 사용 시 해당 대상에 대한 정보를 요약해주는 기능을 한다.

   - cov / cor 함수 : 두 벡터의 공분산과 상관계수 계산

 

R의 데이터 핸들링

1) 벡터형 변수

   - 벡터 뒤에 대괄호 [ ] 를 붙여 숫자를 지정하여, 원하는 값을 불러온다.

> b = c ("a", "b", "c", "d", "e")

> b [2]                # 2번째 값

[1]     "b"



> b [-2]                # 2번째 값을 제외한 벡터

[1]     "a"     "c"     "d"     "e"



> b [ c( 2 , 3 ) ]                # 2, 3번째 값

[1]     "b"     "c"

 

2) 행렬/데이터 프레임 변수

   - 행렬형 변수나 데이터 프레임 변수에 대해서도 대괄호를 통해 특정요소의 참조가 가능하다.

   - 원하는 행, 열, 행과열 / 제외하려는 행, 열을 선택할 수 있으나, [ -m , -n ] 의 형태로 하나의 원소만을 제외할 수는 없다.

> mydat [ 3 , 2 ]                    # 3행 2열의 값



> mydat [    , 2 ]                    # 2열의 값



> mydat [ 4 ,    ]                    # 4행의 값

 

 

반복구문과 조건문

1) for 문

   - 괄호 안의 조건 하에서 중괄호 { } 안의 구문을 반복실행

(예) 1부터 100까지의 합

> isum = 0

> for (  i   in   1 : 100  )  {

+ isum = isum + i

+ }

> cat ( "1부터 100까지의 합 = ", isum, "\n")

1부터 100까지의 합 = 5050

 

2) while 문

   - for 문과 마찬가지로 주어진 조건 하에서 중괄호 { } 안의 구문을 반복실행

   - for 문과 달리 몇 회 반복할지 미리 정해지지 않음

(예) 1부터 100까지의 합

> isum = 0

> i = 1

> while (  i < 101 )  {

+ isum = isum + i

+ i = i + 1

+ }

> cat ( "1부터 100까지의 합 = ", isum, "\n")

1부터 100까지의 합 = 5050

 

3) if~else 문

   - if 조건문은 특정 조건이 만족되는 경우 이후의 구문을 실행, 만족하지 않는 경우 else 이하의 구문을 실행

(예) 80점 이상이면 A 출력, 80점 미만이면 B 출력

> score = 83

> if ( score >= 80 )  cat("A\n")

+ else  cat("B"\n)

A

 

 

사용자 정의 함수

   - function 명령어를 이용하여 사용자가 직접 함수를 구성할 수 있다.

> 함수명 = function ( x , y , z ) {

+ ...

+ ...

+ }

 

 

기타 유용한 기능들

1) paste

   - 문자열을 하나로 붙여주는 명령어

   - 'sep = ' 옵션을 통해 구분자를 삽입할 수 있다.

> number = 1 : 10

> alphabet = c ( "a", "b", "c" )

> paste ( number, alphabet)

[1]     "1a"    "2b"    "3c"    "4a"    "5b"    "6c"    "7a"    "8b"    "9c"    "10a" 



> paste ( number , alphabet , sep=" to the " )

[1]    "1 to the a"    "2 to the b"    "3 to the c"    "4 to the a"    "5 to the b"

[6]    "6 to the c"    "7 to the a"    "8 to the b"    "9 to the c"    "10 to the a"

 

2) substr

   - 주어진 문자열에서 특정 문자열을 추출하는 명령어

> substr ( "BigDataAnalysis" , 1, 4 )

[1]    "BigD"



> country = c ("Korea" , "Japan" , "China" , "France " , "Spain" )

> substr ( country , 1 , 3 )

[1]    "Kor"    "Jap"    "Chi"    "Fra"    "Spa"

 

3) 데이터 구조 변환

as.data.frame(x) 데이터 프레임 형식으로 변환
as.list(x) 리스트 형식으로 변환
as.matrix(x) 행렬 형식으로 변환
as.vector(x) 벡터 형식으로 변환
as.factor(x)  팩터 형식으로 변환

   - 강제 형변환에 의해 표시될 수 없을 때는, 결측치인 'NA'가 출력되며 경고문 발생

   - 데이터 프레임을 행렬로 변환할 경우, 원소들은 모두 문자형으로 전환된다.

 

4) 문자열 -> 날짜 변환

   - as.Date("yyyy-mm-dd") 함수 이용

"yyyy-mm-dd" 형식의 문자열이 아닐경우, format 옵션으로 형식을 지정한다.



> as.Date ( "01/13/2015" , format="%m/%d/%Y" )

[1]    "2015-01-13"

 

5) 날짜 -> 문자열 변환

   - format 함수와 as.character 함수를 이용해 날짜를 문자열로 변환한다.

> format(Sys.Date())                # Sys.Date() : 현재 날짜를 반환

[1]    "2019-08-11"

> as.character(Sys.Date())

[1]    "2019-08-11"

 

   - format 함수의 옵션

> format(Sys.Date(), format="%m/%d/%Y")

[1]    "08/11/2019"



> format(Sys.Date(), '%a')     # 요일 출력



> format(Sys.Date(), '%b')     # 월 출력



> format(Sys.Date(), '%m')     # 두자리 숫자의 월 출력



> format(Sys.Date(), '%d')     # 두자리 숫자의 일 출력



> format(Sys.Date(), '%y')     # 두자리 숫자의 연도 출력



> format(Sys.Date(), '%Y')     # 네자리 숫자의 연도 출력

'R 프로그래밍' 카테고리의 다른 글

[R] Data Load & Graphic  (0) 2022.05.07
[R] R 프로그래밍 기초(2)  (0) 2022.05.03
[R] R 프로그래밍 기초  (0) 2022.04.29

R 입력과 출력

  • 테이블로 된 데이터 파일 읽기 (변수 구분자 포함): read.table("파일이름", sep="구분자")
  • CSV 데이터 파일 읽기(변수 구분자는 쉼표): read.csv("파일이름", header=T)
  • CSV 데이터 파일로 출력(변수 구분자는 쉼표): write.csv(행렬 또는 데이터프레임, "파일이름", row.names=F)

 

데이터 프레임과 데이터 구조

(1) 벡터(Vector)

  • 벡터들은 동질적이다: 한 벡터의 원소는 모두 같은 자료형을 가진다.
  • 벡터는 위치로 인덱스된다: V[2]는 V벡터의 2번째 원소이다.
  • 벡터는 인덱스를 통해 여러 개의 원소로 구성된 하위 벡터를 반환할 수 있다.: V[c(2, 3)]은 V 벡터의 2번째, 3번째 원소로 구성된 하위벡터
  • 벡터 원소들은 이름을 가질 수 있다.
기능 코드
벡터에 데이터 추가 v <- c(v, newItems)
v[length(v)+1] <- newItems
벡터에 데이터 삽입 append(vec, newvalues, after=n)
요인 생성 f <- factor(v)
f <- factor(v, levels)
여러 벡터를 합쳐 하나의 벡터와 요인으로 만들기 comb <- stack(list(v1=v1, v2=v2))
벡터 내 값 조회 V[c(1, 3, 5, 7)]
V[-c(2, 4)]

 

(2)리스트(List)

  • 리스트는 이질적이다: 여러 자료형의 원소들이 포함될 수 있다.
  • 리스트는 위치로 인덱스된다: L[[2]]는 L 리스트의 2번째 원소이다.
  • 리스트에서 하위 리스트를 추출할 수 있다.: L[c(2, 3)]은 L 리스트의 2번째, 3번째 원소로 이루어진 하위 리스트
  • 리스트의 원소들은 이름을 가질 수 있다.: L[["Moe"]]와 L$Moe는 둘 다 "Moe"라는 이름의 원소를 지칭한다.
기능 코드
리스트 생성 L <- list(x, y, z)
L <- list(valuename1=vec, valuename2= data)
리스트 원소선택 L[[n]]: n번째 원소
L[c(n1, n2, … nk)]: 목록
이름으로 리스트 원소선택 L[["name"]]
L$name
리스트에서 원소 제거 L[["name"]] <- NULL
NULL 원소를 리스트에서 제거 L[sapply(L, is.null)] <- NULL
L[is.na(L)] <- NULL

 

dim 활용 예시

 

(3)행렬(Matrix)

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

기능 코드
행렬 생성 matrix(데이터, 행개수, 열개수)
e <- matrix(1:20, 4, 5)
차원 dim(행렬)
대각행렬 diag(행렬)
전치행렬 t(행렬)
역행렬 solve(matrix)
행렬곱 행렬 %*% 행렬
행 이름 부여 rownames(행렬) <- c("행이름")
열 이름 부여 colnames(행렬) <- c("열이름")
행렬 연산 행렬 + 행렬, 행렬 - 행렬
행렬 + 상수, 행렬 - 상수, 행렬*상수
행렬에서 행, 열 선택하기 vec <- matrix[1, ]
vec <- matrix[, 3]

 

(4) 단일값(scalars)

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

 

(5) 배열(Arrays)

  • 행렬이 3차원 또는 n차원까지 확장된 형태
  • 주어진 벡터에 더 많은 차원을 부여하여 생성

 

(6) 요인(Factors)

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

 

(7) 데이터프레임(Data frame)

  • 데이터 프레임 리스트의 원소는 벡터 또는 요인이다. 벡터와 요인은 데이터 프레임의 열이다.
  • 벡터와 요인들은 동일한 길이이다.
  • 동일한 벡터와 요인들은 데이터프레임을 사각형으로 만든다.
  • 열에는 이름이 있어야 한다.
  • 각각의 열에 대해 문자형인지 수치형인지 자동적으로 구분되어 편리
  • 데이터프레임은 메모리 상에서 구동된다.
기능 코드
데이터프레임 생성 data.frame(벡터, 벡터, 벡터)
행결합 rbind(dfrm1, dfrm2)
newdata <- rbind(data, row)
열결합 cbind(dfrm1, dfrm2)
newdata <- cbind(data, col)
데이터프레임 조회 dfrm[dfrm$gender="m"]
dfrm[dfrm$변수1>4 & dfrm$변수 2>5, c(변수3, 변수4)]


 dfrm[grep("문자", dfrm$변수1, ignore.case=T), c("변수2, 변수3")]


subset(dfrm, select=변수, subset=조건)
데이터 선택 lst1[[2]], lst1[2], lst1[2,], lst1[, 2]
lst1[["name"]], lst1$name
lst1[c("n1", "n2", .., "nk")]
데이터 병합 merge(df1, df2, by="공통열")
열이름 조회 colnames(데이터프레임)
행, 열 선택 subset(dfm, select=열이름)
subset(dfm, select=c(열이름1, 열이름2, 열이름n))
subset(dfm, select=열이름, subset(조건))
이름으로 열 제거 subset(dfm, select=-"열이름")
열이름 변경 colnames(dfm) <- newcolname
NA 행 삭제 df <- na.omit(dfm)
데이터프레임 합치기 cbind_dfm <- cbind(dfm1, dfm2)
rbind_dfm <- rbind(dfm1, dfm2)

 

(8) 데이터 구조 및 자료형 변환

기능 코드
자료형 변환 as.character( )
as.integer( )
구조 변환 as.data.frame( )
as.list( )
as.matrix( )

 

(9) 데이터 구조 변경

기능 코드
벡터 → 리스트 as.list(vector)
벡터 → 행렬 1열짜리 행렬:
cbind(vector) 또는
as.matrix(vector)


1행짜리 행렬: rbind(vector)
n * m 행렬: matrix(vector, n, m)
벡터 → 데이터프레임 1열짜리 데이터프레임:
as.data.frame(vector)


1행짜리 데이터프레임:
as.data.frame(rbind(vector))
리스트 → 벡터 unlist(list)
리스트 → 행렬 1열짜리 행렬: as.matrix(list)
1행짜리 행렬: as.matrix(rbind(list))
n * m 행렬: matrix(list, n, m)
리스트 → 데이터프레임 리스트 원소들이 데이터의 열이면:
as.data.frame(list)


리스트 원소들이 데이터의 행이면:
rbind(list[[1]], list[[2]])
행렬 → 벡터 as.vector(matrix)
행렬 → 리스트 as.list(matrix)
행렬 → 데이터프레임 as.data.frame(matrix)
데이터프레임 → 벡터 1열짜리 데이터프레임:
dfm[[1]] 또는 dfm[, 1]


1행짜리 데이터프레임:
dfm[1, ]
데이터프레임 → 리스트 as.list(dfm)
데이터프레임 → 행렬 as.matrix(dfm)

 

(10) 벡터의 기본 연산

기능 코드
벡터 연산 벡터1 + 벡터2
벡터1 - 벡터2
벡터1 * 벡터2
벡터1 ^ 벡터2
함수 적용 sapply(벡터, 연산함수)
파일저장 write.csv(변수이름, "파일이름")
save(변수이름, file=".RData")
파일읽기 read.csv("파일이름")
load("파일.R")
source("파일.R")
데이터 삭제 rm(변수)
rm(list=ls())

 

 

데이터 변형

(1) 데이터 변형

기능 R 코드
요인으로 집단정의 v <- c(24, 23, 52)
w <- c(87, 86, 92)
f <- factor(c("A", "B", "C")
벡터를 여러 집단으로 분할 groups <- split(v, f)
groups <- split(w, f)
groups <- unstack(data.frame(v, f))
데이터프레임을 여러 집단으로 분할 sp <- split(Car93$MPG.city, Cars93$Origin)
리스트의 각 원소에 함수 적용 lapply(결과를  리스트로 반환)
list <- lapply(list, func)


sapply(결과를 벡터 또는 행렬로 반환)
vec <- sapply(list, func)
행렬에 함수 적용 m <- apply(mat, 1, func)
m <- apply(mat, 2, func)
데이터프레임에 함수 적용 dfm <- lapply(dfm, func)
dfm <- sapply(dfm, func)
dfm <- apply(dfm, func): 데이터프레임이 동질적인 경우만(모두 문자 or 숫자) 활용 가능.
데이터프레임을 행렬로 변환 후 함수 적용
대용량 데이터에 함수 적용 cors <- sapply(dfm, cor, y=targetVariable)
mask <- (rank(-abs(cors)) <= 10)
best.pred <- dfm[, mask]
lm(targetVariable ~ bes.pred)
집단별 함수 적용 tapply(vec, factor, func)
병렬 벡터, 리스트 함수 적용 mapply(factor, v1, …, vk)
mapply(factor, list1, …, list k)

 

(2) 문자열, 날짜 다루기

기능 코드
문자열 길이 nchar("단어")
문자열 연결 paste("word1", "word2", sep="-")
부분 문자열 추출 substr("statistics", 1, 4)
구분자로 문자열 추출 strsplit(문자열, 구분자)
하위 문자열 대체 sub(old, new, string)
gsub(old, new, string)
쌍별 조합 mat <- outer(문자열1, 문자열2, paste, sep="")
현재 날짜 반환 Sys.Date( )
날짜 객체로 변환 as.Date( )
format(Sys.Date(), format=%m%d%y)
날짜 조회 format(Sys.Date(), "%a") 요일
format(Sys.Date(), "%b") 월
format(Sys.Date(), "%B") 월


format(Sys.Date(), "%d") 일
format(Sys.Date(), "%m") 월
format(Sys.Date(),"%y") 연도
format(Sys.Date(), "%Y") 연도
날짜 일부 추출 d <- as.Date("2014-12-25")
p <- as.POSIXlt(d)
p$yday
start <- as.Date("2014-12-01")
end <- as.Date("2014-12-25")
seq(from=start, to=end, by=1)

'R 프로그래밍' 카테고리의 다른 글

[R] Data Load & Graphic  (0) 2022.05.07
[R] General Function  (0) 2022.05.05
[R] R 프로그래밍 기초  (0) 2022.04.29

 

분석환경의 이해

통계 패키지 R

  • 통계 분석 과정에서 수행되는 복잡한 계산이나 시각화 기법을 쉽게 사용할 수 있도록 설계된 무료 소프트웨어
  • 기본으로 제공되는 기능 외에도 사용자들이 직접 제작한 패키지를 이용하여 무수히 많은 기능들을 사용할 수 있도록 확장 가능
  • 상용 소프트웨어나 출력물에 견주어 뒤쳐지지 않는 강력한 시각화 요소

 

R의 선택 기준

  SAS SPSS R
프로그램 비용 유료, 고가 유료, 고가 오픈소스
설치 용량 대용량 대용량 적음
다양한 모듈지원 및 비용 별도 구매 별도 구매 오픈소스
최근 알고리즘 및 기술 반영 느림 다소 느림 매우 빠름
학습자료 입수의 편의성 유료 도서 위주 유료 도서 위주 공개 논문 및 자료 많음
질의를 위한 공개 커뮤니티 NA NA 매우 활발

 

R의 역사

   - 1993년 뉴질랜드 Ross Inaka와 Robert Gentleman에 의해 개발된 소프트웨어

   - AT&T에서 개발한 통계 프로그래밍 언어인 S언어 기반

   - S보다 한 단계 발전되었다는 의미에서 알파벳 S보다 앞선 R을 차용했다는 의미를 포함

   - S로 작성된 대부분의 코드를 실행시킬 수 있었으며, UNIXㆍWindowsㆍLinuxㆍMac OS를 지원하며 발전

 

R의 특징

 그래픽 처리

  • 상용 소프트웨어에 버금가는 상당한 수준의 그래프와 그림을 그릴 수 있다.
  • 사용자가 세부적인 부분까지 직접 지정하여 섬세한 작업을 수행할 수 있다.
  • 고해상도 이미지를 생산하면서 처리 시간이 매우 빠르다.
  • 보고서 작성이나 발표 자료 작성 시에도 유용하게 사용할 수 있다.

 

 데이터 처리 및 계산능력

  • 벡터, 행렬, 배열, 데이터 프레임, 리스트 등 다양한 형태의 데이터 구조를 지원한다.
  • 복잡한 데이터 구조 내의 개별 데이터에 접근하는 절차가 간단하여 큰 데이터를 핸들링하기 간편하다.

 

 패키지

  • 사용자들이 스스로 개발하는 새로운 함수들을 패키지의 형태로 내려받아 사용할 수 있다.
  • 이러한 확장성 덕분에 다른 통계 프로그램에 비해 최신 이론이나 기법을 사용해보기가 더 쉽다.

 

R 소개

  • R은 오픈소스 프로그램으로 통계, 데이터마이닝을 위한 언어이다.
  • 윈도우, 맥, 리눅스 OS에서 사용 가능하다.
  • 객체 지향 언어이며 함수형 언어이다. 즉, 통계 기능뿐만 아니라 일반 프로그래밍 언어처럼 자동화하거나 새로운 함수를 생성하여 사용 가능
  • 객체 지향 언어는 필요한 부분을 프로그래밍으로 골라 추출하여 활용이 가능하다.
  • 함수형 언어는 깔끔하고 단축된 코드, 매우 빠른 수행 속도, 디버깅 노력 감소, 병렬 프로그래밍의 전환이 용이하다는 특징을 가진다.

 

R IDE 도구

1. R Studio

  • 메모리에 변수가 어떻게 되어있는 지와 타입이 무엇인지를 볼 수 있고 스크립트 관리와 도큐먼테이션이 편리하다.
  • 스크립트용 프로그래밍으로 어렵지 않고 쉽게 자동화가 가능하다.

2. Visual Studio Code

 파이썬으로 프로그래밍을 할 때 사용했던 IDE로 나에겐 VSCode가 익숙하다. 하지만 R을 학습하는 단계에서는 R Studio를 사용하면서 학습 할 생각이다. 학습을 완료한 이후에는 익숙한 VSCode로 추가적인 학습을 이어나갈 생각이다.

 

R 프로그래밍 기초

(1) 패키지(Package)

- R 함수, 데이터 및 컴파일된 코드의 모임
- 패키지 자동설치: install.packages("패키지")
- 패키지 수동설치: install.packages("패키지명", "패키지 위치")

 

(2) 스크립트로 프로그래밍 된 파일 실행

- source("파일명.R")
- pdf( ): 그래픽 출력을 pdf 파일로 지정

 

(3) 배치모드

- 사용자와 인터랙션이 필요하지 않은 방식으로, 매일 실행되어야 하는 프로그램에서 프로세스를 자동화할 때 유용하다.
- 배치파일 실행 명령: batch.R 실행파일이 있는 위치에서 윈도우 창에 "R CMD BATCH batch.R" 명령어 실행

 

(4) R 명령어

print( )  출력 형식을 지정할 필요 없음. 한 번에 하나의 객체만 출력
cat( )  여러 항목을 묶어서 연결된 결과로 출력. 복합적 데이터 구조(행렬, list )를 출력 불가
 " <-, <<-, =, ->" 대입 연산자
 ls( ) 변수 목록보기
 rm( ) 변수 삭제하기
 c( ) 벡터 생성하기

- 벡터의 원소 중 하나라도 문자가 있으면 모든 원소의 자료형은 문자형태로 변환

지역변수  단순히 값을 대입하기만 하면 지역변수로 생성. 함수가 종료되면 지역변수는 삭제됨
조건부 실행문  if
반복 실행문  for, while, repeat
전역변수  "<<-"를 사용하여 전역변수를 변경할 수 있지만 추천하지 않음
수열  "시작값
반복  rep( ) 함수는 숫자나 변수의 값들을 반복해서 생성 가능.
문자열 붙이기  paste( ) 함수
문자열 추출  substr(문자열, 시작점, 끝점) 함수는 문자열의 특정 부분을 추출 가능
논리값  T True, F False

- 논리연산자

== 같다
!= 같지 않다
<, <= 작다, 작거나 같다
>, >= 크다, 크거나 같다

 

· 벡터의 원소 선택하기: V[n], n은 원소의 자릿수, 논리형 벡터, 벡터의 이름.

· 벡터의 원소 제외하기: V[-n], n은 제외하고자 하는 원소의 자릿수

 

(5) 벡터의 연산

[, [[  인덱스
$  요소, 변수 뽑아내기
^  지수 계산. ) 5^2 = 25
-, +  단항 마이너스, 플러스 부호
:  수열 생성
%/%  나눗셈 결과의 몫 반환
%%  나눗셈 결과의 나머지 반환
%*%  행렬 곱
*, /  곱하기, 나누기
+, -  더하기, 뻬기
!  논리 부정. !T = F
&  논리 "and".
|  논리 "or".
~  (formula)
->, ->>  오른쪽 대입
=  오른쪽을 왼쪽으로 대입
<-, <<-  오른쪽을 왼쪽으로 대입
?  도움말

 

(6) 기초통계 명령어

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

 

'R 프로그래밍' 카테고리의 다른 글

[R] Data Load & Graphic  (0) 2022.05.07
[R] General Function  (0) 2022.05.05
[R] R 프로그래밍 기초(2)  (0) 2022.05.03

+ Recent posts