컴퓨터/R

R - 자료형 ① vector(벡터)

해피밀세트 2020. 4. 8. 19:16

 

vector(벡터)

  • 같은 데이터 타입을 갖는 1차원 배열구조(파이썬의 Series)
  • c( ) : combine value
  • 벡터는 중첩할 없다.
  • 단일 데이터 타입만 가능하다.
  • 데이터 변환 규칙 : integer < double(numeric) < character

 

1) 벡터는 같은 데이터 타입을 갖는 1차원 배열구조이다.

# 벡터인 경우

x <- c(10,20,30,40,50)

x

class(x)

mode(x)

typeof(x)

str(x)

# 벡터가 아닌 경우

y <- c(1L,2,'삼')

y

mode(y)

class(y)

typeof(y)

str(y)

 

 

2) 벡터의 열(컬럼)

# 벡터 만들기
# 벡터는 중첩해서 사용할 수 없다.

x <- c(1,2,3,c(4,5))

x

# 벡터 안에서 벡터 계산

x <- c(1,2,3,sum(c(4,5)))

x

# 벡터의 열 만들기

x <- c(1,2,3,sum=c(4,5))

x

 

x <- c("국어"=90,"수학"=80,"영어"=100)

x

 

y <- c("과목"=c(90,80,100))

y

# 벡터값 계산

x + 10

# 벡터안의 컬럼 이름확인

names(x)
names(y)

# 컬럼이름 수정

names(y) <- c("국어","수학","영어")

y

 

names(y) <- NA
y

# 벡터의 열 제거

names(y) <- NULL

y

# 벡터의 열이름이 없는 경우 NULL이 출력된다.

x <- c(1,2,3,c(4,5))

x

names(x)

# 열이름이 없는 곳은 NA로 표시된다.

names(x) <- c('a','b','c')

x

 

3) 벡터의 인덱싱과 슬라이싱

# 벡터의 길이

length(x)

NROW(x)

# 벡터의 인덱싱

x <- c(10,20,30,40,50)

x

x[0]

x[1]

# 요소는 제외한 나머지 인덱싱

x[-1]

x[-2]

# 요소의 값만 뽑아내기

x[c(1,3)]

x[c(-1,-3)]

 

# 컬럼 이름으로 인덱싱 가능

names(x) <- c('a','b','c','d','e')

x

x['a']

x[c('a','c')]

# 벡터의 슬라이싱

x[1:5]

x[-1:-3]

# 벡터의 값을 수정 / 인덱싱이나 슬라이싱을 통해 수정

x <- c(10,20,30,40,50)

x

x[1] <- 1

x

x[1] <- NA

x

x[1:3] <- c(1,2,3)

x

 

4) 벡터 비교

# 벡터 비교(인덱스끼리 비교)

x <- c(1,2,3)

y <- c(1,2,3)

z <- c(1,2,4)

x == y

x == z

 

# 벡터의 길이가 일치해야지만 비교한다.

x1 <- c(1:4)

x == x1 

# 벡터의 값이 동일한지 비교

identical(x,y)

identical(x,z)

# 두 벡터가 같은 집합인지 비교

setequal(x,y)

# 3가지 비교법

x1 <- c(1:5)           #정수형
x2 <- c(1,2,3,4,5)    #실수형

str(x1)

str(x2)

 

x1 == x2           # 인덱스의 값을 비교

setequal(x1,x2)    # 집합 값을 비교

identical(x1,x2)    # 벡터의 길이, 인덱스의 , 타입 비교

형변환을 하면 TRUE가 된다.

# as.integer() : 정수형 형변환 함수
identical(x1,as.integer(x2))

 

#as.numeric() : 실수형 형변환 함수

identical(as.numeric(x1),x2)

 

5) 기타 벡터 다루기

# 벡터의 값을 추가

x[6] <- 60

x

x[NROW(x)+1] <- 70

x

# append를 이용한 벡터의 값을 추가

x <- append(x,80,after=7)

x

# 연속되는 값을 표현하는 방법

x <- 1:100

x

y <- c(1:100)

y

# sequence : 자동 일련번호 생성
# seq(시작값, 종료값,  증가분)

x <- seq(1,100,2)

x

# 길이만큼 일련번호 생성

x <- c(10,20,30,40,50)
1:length(x)
seq_along(x)

# 역순

10:1

seq(10,1,-1)

# 벡터 연산

x <- c(10,20,30,40,50)
x+10
x-10
x*10
x/10
x%/%2
x%%2

# 벡터의 집합 연산자

x <- c(1,2,3,4)

y <- c(1,4,6)

# 합집합

union(x,y)  
# 교집합

intersect(x,y)

# 차집합

setdiff(x,y)  

#벡터 변수에 값이 있는지 판단

1 %in% x

5 %in% x

# 벡터 변수에 값이 어느 위치에 있는지 판단

x <- c('b',NA,'a','d','a',NA)

x

'a' %in% x
x == 'a'
x[x == 'a']

# 조건에 해당하는 요소 번호 찾기

which('a'==x)
x[which('a'==x)]

#벡터에 NA 있는 인덱스를 찾아야할때

is.na(x)

x[is.na(x)]

which(NA==x)

which(is.na(x))

# NA 수정

x[which(is.na(x))] <- 'c'

x

 

6) 벡터의 정렬

# 정렬하기

x1 <- c(9,7,3,6,4,2,1)

x1

sort(x1,decreasing = FALSE)   # 오름차순

sort(x1,decreasing = TRUE)    # 내림차순

# NA값 정렬

x2 <- c(9,7,3,6,NA,4,2,1)
x2

sort(x1,decreasing = FALSE)
sort(x2,decreasing = FALSE, na.last=TRUE)
sort(x2,decreasing = FALSE, na.last=FALSE)

# 인덱스 번호도 함께 출력

sort(x2,decreasing = FALSE,index.return = TRUE)
sort(x2,decreasing = FALSE,index.return = TRUE)$x
sort(x2,decreasing = FALSE,index.return = TRUE)$ix

반응형

'컴퓨터 > R' 카테고리의 다른 글

R - 자료형 ④ array(배열)  (0) 2020.04.09
R - 자료형 ③ matrix(행렬)  (0) 2020.04.09
R - 자료형 ② list(리스트)  (0) 2020.04.08
R - 변수 / 숫자·문자형 / 연산자 / NA와 NULL  (0) 2020.04.08
R - R 설치 / R Studio 설치  (0) 2020.04.08