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 |