R 언어 데이터관련 기초
Last Update: 2023-04-19
1. 기본 데이터 유형
- 수치- 정수형
- 실수형
 
- 논리형
- TRUE,- FALSE,- T,- F,- 1,- 0
- 복소수형
- 3 + 2i
- 문자형
- "abc"
2. 기본 연산
기본연산자
- ^,- **
- 거듭제곱
- :
- 연속된 데이터 정의
- ex) 1:10연산은 1부터 10까지를 생성한다.
- +,- -,- *,- /
- 사칙연산
- <,- >,- <=,- =>,- ==
- 비교연산
- <-,- =,- ->
- 할당연산
- ;
- 같은 줄에 여러 명령어 사용시.
데이터 유형 확인
mode(10+1) == "numeric"
mode(mode(10+1)) == "character"
수학 함수
- abs(x)
- round(x, digits=y)
- 소수점 밑 y자리에서 반올림(소수점 y자리까지 표시)
- sqrt(x)
- log(x),- log10(x),- log2(x)
- pi
3. 데이터 객체
데이터 객체 별 구조 및 특징
R의 데이터 저장 방식은 아래와 같다.
|   데이터 객체      |   차원    |   복수 데이터 유형    |
|  :----------:     |   :-----: |   :-----:            |
|   vector          |   1차원   |   불가                |
|   matrix          |   2차원   |   불가                |
|   list            |   2차원 이상  |   가능    |
|   data frame      |   2차원   |   가능    |
데이터 객체 명명 규칙
- 영문자(대 소 구분), 숫자, .,_, 한글 가능
- 첫 문자로 숫자, _사용불가
- 예약어 사용 불가
값 항당 방법
아래는 모두 같은 결과를 나타낸다.  
x = log(2)  
x <- log(2)  
log(2) -> x
객체 관리
ls(), objects() 함수를 통해서 현재 생성되어있는 객체를 확인 할 수 있다.  
객체 삭제
rm()함수를 통해서 객체를 삭제할 수 있다.  
rm(a) # a 삭제
rm(list = ls()) # 전체 객체 삭제
4. Vector
하나 이상의 data값으로 구성된 1차원 자료구조.
한 가지 유형의 데이터만 입력가능하다.  
백터 할당 방법
- :연산자
- c()
- seq()
- req()
- paste()
: 연산자 이용  
> vector_1 = -3:3; vector_1
[1] -3 2 1 0 1 2 3
c() - combine 함수
인자로 넘겨주는 원소들을 묶어서 벡터로 생성한다. 다음의 특징이 있다.  
- 다른 형의 데이터 존재시 하나로 형변환
- (정수, 실수) --> 모두 실수
- (수치, 문자) --> 모두 문자
- 각 데이터에 index를 지정할 수 있다.
> c(5, 6, 7)
[1] 5, 6, 7
> c(5.1, 6, 7)
[1] 5.1, 6.0, 7.0
> x = c(aa=1, b=2, c=3); x
aa b c
1  2 3 
> x['aa']
[1] 1
seq()사용  
> seq(4)
[1] 1 2 3 4
> seq(1, 4)
[1] 1 2 3 4
> seq(1, 4, by=0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0
> seq(from=1, to=4, by=0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0
> seq(1, 4, length=8)
[1] 1.000000 1.428571 1.857143 2.285714 2.714286 3.142857 3.571429
[8] 4.000000
rep() 사용  
> rep(2)
[1] 2
> rep(2, 3)
[1] 2 2 2
> rep(c(1, 2), 2)
[1] 1 2 1 2
> rep(c(1, 2), times=2)
[1] 1 2 1 2
> rep(c(1, 2), each=2)
[1] 1 1 2 2
paste() 사용  
> paste("A", 1:5)
[1] "A 1" "A 2" "A 3" "A 4" "A 5"
> paste("A", 1:5, sep="")
[1] "A1" "A2" "A3" "A4" "A5"
> paste("A", 1:5, 5:1, sep=",")
[1] "A,1,5" "A,2,4" "A,3,3" "A,4,2" "A,5,1"
names()를 통한 원소의 이름 정의  
> x = 1:4
> names(x) = c('a', 'b', 'c', 'd')
> names(x)
[1] "a" "b" "c" "d"
> x
a b c d 
1 2 3 4 
원소 접근
5. Matrix
matrix는 동일한 자료형으로 이루어진 2차원 자료구조.
matrix를 정의하는 속성은 다음과 같다.  
- mode - 자료형
- length - 길이
- dim - 차원
- dimnames
- 차원의 이름
> mat1 = rbind(1:5, 6:10); mat1
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    6    7    8    9   10
> mode(mat1)
[1] "numeric"
> length(mat1)
[1] 10
> dim(mat1)
[1] 2 5
> dimnames(mat1)
NULL
Vector를 이용한 Matrix 생성
rbind()와 cbind를 사용가능.  
> r1 = 1:5; r2 = 6:10
> mat1 = rbind(r1, r2); mat1
   [,1] [,2] [,3] [,4] [,5]
r1    1    2    3    4    5
r2    6    7    8    9   10
> c1 = 1:5; c2 = 6: 10
> mat1 = cbind(c1, c2); mat1
     c1 c2
[1,]  1  6
[2,]  2  7
[3,]  3  8
[4,]  4  9
[5,]  5 10
matrix()함수를 이용한 생성  
- 기본적으로 열 방향으로 데이터 채워짐
- nrow,- ncol
- 행과 열 개수 지정
- byrow
- TRUE로 지정시 행방향으로 채움
> mat1 = matrix(1:6); mat1
     [,1]
[1,]    1
[2,]    2
[3,]    3
[4,]    4
[5,]    5
[6,]    6
> mat1 = matrix(1:6, nrow=2); mat1
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> mat1 = matrix(1:6, ncol=2); mat1
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
> mat1 = matrix(1:6, byrow=T, ncol=2); mat1
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6
dim()함수를 이용한 차원변경  
> mat1
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6
> dim(mat1) = c(2, 3); mat1
     [,1] [,2] [,3]
[1,]    1    5    4
[2,]    3    2    6
dimnames()사용해 이름정의  
> dimnames(mat1)
NULL
> dimnames(mat1) = list(c('r1', 'r2'), c('c1', 'c2', 'c3'))
> mat1
   c1 c2 c3
r1  1  5  4
r2  3  2  6
6. Data Frame
- database table과 유사한 구조
- 변수(열)와 관측치로 구성됨
- 각 열의 데이터 유형 불일치 가능
- 각 열의 데이터 개수 일치 필요
data.frame()함수를 통한 생성  
> num = 1:3
> value = c(10, 5, 20)
> data1 = data.frame(num, value)
> data1
  num value
1   1    10
2   2     5
3   3    20
data frame 변수 접근
> data1
  num value
1   1    10
2   2     5
3   3    20
> data1$num
[1] 1 2 3
> data1[c('num', 'value')]
  num value
1   1    10
2   2     5
3   3    20
> data1[1,]
  num value
1   1    10