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

+ Recent posts