Programming/R

[R기초] Data object : vector 벡터 자료형

aram 2023. 7. 24. 12:15

 

-  벡터에 저장하기 : c()  |  시작값:마지막값  |  append()  |  seq()  |  rep()

# a변수에 1~5까지 값 저장
a <- c(1,2,3,4,5) #1 2 3 4 5
a <- 1:5
# a ~ f 문자를 b 변수에 저장
b <- "a":"f"  #Error
b <- c("a", "b", "c", "d", "e", "f") #"a" "b" "c" "d" "e" "f"

## append( 벡터, 추가값, 자리수 )
v1 <- c(1,10,6,4,NA,9)
vec1 <- append(vec1, 10, after=3) #1 10  6 10  4 NA  9
vec1 <- append(vec1, c(11, 12),after=1) #1 11 12 10  6 10  4 NA  9

## seq( 시작, 끝, 건너뛰기 )
v7 <- seq(1, 10, 2) # 1 3 5 7 9

## rep( 범위, each=반복횟수 )
> v8 <- rep(1:3, 2)  #1 2 3 1 2 3 : 1~3 사이 값을 2번 벡터로 저장
> v9 <- rep(1:3, each=2) #1 1 2 2 3 3 : 요소를 각각 2번씩 저장

## 날짜를 벡터로 저장하기
## seq(from=시작날짜, to=마지막날짜, by='day'|'month'|'year')
seq(from=as.Date('2023-07-30'), to=as.Date('2023-08-02'), by=1) 
	#"2023-07-30" "2023-07-31" "2023-08-01" "2023-08-02"
seq(from=as.Date('2023-10-01'), to=as.Date('2023-12-31'), by="month")
	#"2023-10-01" "2023-11-01" "2023-12-01"
seq(from=as.Date('2000-01-01'), to=as.Date('2004-12-31'), by="year")
	#"2000-01-01" "2001-01-01" "2002-01-01" "2003-01-01" "2004-01-01"

- 슬라이싱[ 1부터strat : last포함 ]

vec1 = c(1,2,3,4)
vec1[3] #3       해당번호 조회
vec1[-2] #1 3 4  해당 번호 제외 후 전체 조회
vec1[2:3] #2 3   2~3번째 조회
vec1[3] = 6
vec1[2] <- 10
vec1[6] <- 9
print(vec1) #1 10  6  4 NA  
print(length(vec1)) #6
## NA : 값x. 자리수는 차지함
## NULL : 값, 자리수 모두 x

#초기화
vec1 <- nullfile() # "nul:"
length(vec1) # 1

- vector 연산 : union()  setdiff()  intersect()  

v1 <- c(1,2,3)
v2 <- c(4,5,6)
v3 <- c('3','4','5')
v4 <- c(10,20,30,40,50)
v5 <- c(0,1,2,3,4)

##더하기
v1+v2  #5 7 9
v1+10  #11 12 13
v1 + 10  #11 12 13
c(1,2,3)+10 #11 12 13
c(1,2,3) + 10 #Error
v1 + v4 #11 22 33 41 52 Warning message: 자리수 맞춰야함
##합하기
union(v1,v2) # 1 2 3 4 5 6
v1+v3 #Error
union(v1,v3) # "1" "2" "3" "4" "5 자동형변환
## 빼기
v1 - v2 #-3 -3 -3
## 차집합
setdiff(v4, v1) #10 20 30 40 50
setdiff(v1, v4) #1 2 3
## 교집합
intersect(v1, v5) #1 2 3

mean(v4) #30 : 평균
sum(v4)  #150 : 합계

- 벡터 길이 조회 : length()   NROW()

v9 <- rep(1:3, each=2) #1 1 2 2 3 3
length(v9) # 6
NROW(v9) # 6

- 요소 이름 지정 : names() <- 이름벡터

names(v1) <- c("a", "b", "c")
print(v1)
# a b c 
# 1 2 3

- 조건 검색 

# 벡터데이터 조건
x = 1:10  #1  2  3  4  5  6  7  8  9 10

#5이상인 데이터 조회
x[x>=5] # 5 6 7 8 9 : TRUE인 값만 출력
x>=5
# FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
# TRUE / FALSE로 출력

#x 데이터 중 짝수인 데이터만 출력
x[x%%2==0] # 2  4  6  8 10

 

* 내용참고&출처 : 태그의 수업을 복습 목적으로 정리한 내용입니다.

728x90