R 언어 데이터관련 기초

Last Updated: 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