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