[ R 데이터 유형 : Vector ]
Data Type
1. Vector
2. Factor *
3. Matrix
4. Array
5. Data Frame ***
6. List *
(* 중요도)
1. Vector—-
[특징]
- 하나의 열(column)로 구성되어 있음
- 1차원 구조
- 하나의 데이터 유형만 받음
- 데이터 분석의 기본
1.1 Vector 만들기—-
- 하나의 값(element)으로 이루어진 vector
v1 <- 10 # numeric vector
v2 <- "Lee" # character vector, element 1
v3 <- FALSE # logical vector, element 1
- 두 개 이상의 값으로 이루어진 vector
i. c(element, element, …)
- c는 combine, concatenate의 약자
- numeric, character, logical vector 모두 생성 가능
age <- c(34, 28, 25, 25, 23) #규칙이 없는 것들은 c
bt <- c("b", "b", "b", "a", "b", "a") #character vector, 6 element
smoke <- c(FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) #logical vector, 6 element
c(1, "Lee", TRUE)
c(1, TRUE)
age2 <- c(24, 28, 25, 24)
age3 <- c(age, age2)
ii. :
- numeric vector에만 적용
- 1씩 증가되는 숫자들 또는 1씩 감소되는 숫자들로 구성된 벡터를 만들 때 사용
- start:end
- start < end : 1씩 증가
- start > end : 1씩 감소
- start == end : start or end
- start에 있는 숫자부터 시작해서 end에 있는 숫자를 넘지 않을 때까지 1씩 증감
v1 <- 1:10
v1
10:1
-3.3:1
## -3.3 -2.3 -1.3 -0.3 0.7
1:-3.3
## 1 0 -1 -2 -3
iii. seq(from = , to = , by = )
[특징]
- numeric, vector에만 적용
- :의 확장
0 모든 증가/감소의 폭 지정 가능
- seq(from = start, to = end, by = 증감의 폭)
seq(from = 1, to = 5, by = 0.001)
seq(from = 5, to = 1, by = -0.001)
iv. sequence(숫자)
[특징]
- numeric, vector에만 적용
- 1 ~ ‘숫자’ 사이의 정수
- ’숫자’는 양수이어야 함
sequence(10)
sequence(3.5)
sequence(1)
sequence(-3)
문제 1. 아래가 나오게 하려면 어떤 코드를 수행해야 하는가?
## [1] 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
(정답은 맨 밑에)
v. rep(vector, times = , each = )
- rep : replicate의 약자
- numeric, character, logical vector 만들수 있음
- 주어진 벡터를 복사해 주는 기능
rep(1, times = 10)
rep(1, each = 10)
rep(1:3, times = 10) ## 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
rep(1:3, each = 10) ## 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
rep(1:3, times = 5, each = 10)
## [1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 1 1 1 1 1
## [36] 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 1
## [71] 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2
## [106] 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2
## [141] 3 3 3 3 3 3 3 3 3 3
- times와 each를 같이 쓴다면, each가 먼저 실행된다
문제 2. 아래가 나오게 하려면 어떤 코드를 수행해야 하는가?
## [1] "a" "b" "c" "a" "b" "c" "a" "b" "c" "a" "b" "c" "a" "b" "c"
문제 3. 아래가 나오게 하려면 어떤 코드를 수행해야 하는가? (a: 10개, b: 6개, c: 7개)
## [1] "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "b" "b" "b" "b" "b" "b" "c"
## [18] "c" "c" "c" "c" "c" "c"
1.2 Vector의 속성
- 데이터의 개수 : length(vector)
money <- c(300, 50, 1000, 100, 100)
length(money) ## 5
- element의 이름 : names(vector)
names(money) ## NULL
- Object가 없는 값 : NULL
- Object 1. data 2.graph
names(money) <- c("Mat", "Pat", "R", "Python", "SQL")
names(money) ## "Mat" "Pat" "R" "Python" "SQL"
money ## Mat Pat R Python SQL
## 300 50 1000 100 100
names(money) <- NULL # names 다시 지우기
1.3 Vector의 Index
money <- c(300, 50, 1000, 100, 100)
첫 번째 element의 위치가 1로 시작함
1.4 Vector의 Slicing
vector[index]
money[1] ## 300
money[3] ## 1000
money[5] ## 100
문제 4. 아래가 나오려면 어떤 코드를 수행해야 하는가?
## [1] 300 100 100
문제 5. 아래가 나오려면 어떤 코드를 수행해야 하는가?
## [1] 50 1000 100 100
문제 6. 아래 처럼 홀수번째를 한번에 가져오려면 어떤 코드를 수행해야 하는가?
## [1] 300 1000 100
1.5 Vector의 연산
v1 <- 1:3
v2 <- 4:6
v3 <- v1+v2
v3
벡터화(Vectorization)
v4 <- 1:6
v1 + v4 #재사용 규칙(Recycliing Rule), v4는 한 번 더 반복해서 더해짐
## [1] 2 4 6 5 7 9
v5 <- 1:7
v1 + v5
## Warning in v1 + v5: 두 객체의 길이가 서로 배수관계에 있지 않습니다
## [1] 2 4 6 5 7 9 8
데이터 개수의 배수가 되지 않아, 완전한 재활용이 안됨.
[정답]
문제 1. sequence(1:5)
문제 2. rep(c(“a”,“b”,“c”), times=5)
문제 3. rep(c(“a”,“b”,“c”), times = c(10, 6, 7))
문제 4. money[c(-2,-3)] 혹은 money[c(1,4,5)]
문제 5. money[-1] 혹은 money[2:5]
문제 6. money[seq(from = 1, to = 5, by = 2)] 혹은 money[seq(from = 1, to = length(money), by = 2)] (데이터의 양이 변할 수 있으니)
'■ 프로그래밍 > R' 카테고리의 다른 글
[R 기초] 외부 데이터(txt, csv, excel) 불러오기 (0) | 2018.08.21 |
---|---|
[R 기초] 데이터 유형 - Array, Data.Frame, List (0) | 2018.08.19 |
[R 기초] 데이터 유형 - Factor, Matrix (0) | 2018.08.18 |
[R 기초] 연산자, 데이터 유형, is, as (0) | 2018.08.11 |
[R, R studio] 소개 (0) | 2018.08.11 |