2. R 데이터 구조 (벡터, 행렬, 리스트, 배열, 데이터프레임)

 

R 데이터 구조

<

 

 

 

 

  • 벡터 (Vector)
  • 행렬(Matrix)
  • 리스트 (List)
  • 배열 (Array)
  • 데이터 프레임 (Data Frame)
  • 데이터 테이블 (Data Table)
 

 

 


 

벡터 (Vector)

 
 
 
 
 
 
x<-c(1,2,3,4,5)  # 벡터 생성
x[2]             # 벡터의 2번째 요소 확인
x[4]<-0          # 벡터의 4번째 요소를 0으로 변경
x
 
 
 
2
 
  1. 1
  2. 2
  3. 3
  4. 0
  5. 5
 
 
 
 
 
 
c(x,4) # 4를 결합
 
 
 
  1. 1
  2. 2
  3. 3
  4. 0
  5. 5
  6. 4
 

 

 


 

벡터를 활용한 행렬 생성

 
 
 
 
 
 
r1 <- c(1,4,7)
r2 <- c(2,5,8)
r3 <- c(3,6,9)
rbind(r1,r2,r3) 
 
 
 
A matrix: 3 × 3 of type dbl
r1 1 4 7
r2 2 5 8
r3 3 6 9
 
  • rbind 는 밑으로 붙힌다. row 붙히기.
 

 

 


 

벡터를 활용한 행렬 생성 2

 
 
 
 
 
 
c1 <- 1:3
c2 <- 4:6
c3 <- 7:9
cbind(c1,c2,c3)
 
 
 
A matrix: 3 × 3 of type int
c1 c2 c3
1 4 7
2 5 8
3 6 9
 
  • cbind 는 오른쪽으로 붙힌다.

 

 


 

매트릭스 (Matrix)

  • 매트릭스 = 행렬
  • 2차원의 데이터 구조이다. 배열의 형태를 가진다
 
 
 
 
 
 
x <- matrix(c(1,2,3,4), nrow=2, ncol=2)
x
x <- matrix(c(1,2,3,4))
x
y <- matrix(c(1,2,3,4), nrow=2, ncol=2, byrow=T)
y
 
 
 
A matrix: 2 × 2 of type dbl
1 3
2 4
 
A matrix: 4 × 1 of type dbl
1
2
3
4
 
A matrix: 2 × 2 of type dbl
1 2
3 4
 

 

 


 

배열 (array)

  • 배열은 행렬을 2차원 이상으로 확장 시킨 데이터 구조.
  • 행렬은 2차원이지만 배열은 필요에 따라 3차원, 4차원 임의의 차원을 생성 할수 있음.
  • 배열의 생성은 array()와 dim()함수를 이용하여 각 차원의 요소 수를 벡터로 지정.
 
 
 
 
 
 
array(1:6)
array(1:6, c(2,3))
array(1:8, c(2,2,2)) # 3차원 배열 만들기
 
 
 
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
 
A matrix: 2 × 3 of type int
1 3 5
2 4 6
 
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
 

 

 


 

배열의 생성 2

  • dim을 이용하여 3행 4열의 2개의 행렬을 갖는 배열 생성
 
 
 
 
 
 
arr <- c(1:24)
dim(arr) <- c(3,4,2) 
arr
 
 
 
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
 

 

 


 

데이터 프레임(Data Frame)

  • 데이터 프레임은 행렬과 비슷한 형태로 있음.
  • 행렬은 차원으로 표시, 데잍 프레임은 각 열들이 서로 다른 형태의 데이터 유형 포함 가능.
  • 범주형 변수를 가질 수 있기에 범주형 분석에도 유용하게 사용.
  • data.frame() 함수를 이용.
 
 
 
 
 
 
char1 <- c("A","A","B","B","C")
char1
num1 <- c(1,1,2,2,3)
num1
test1 <- data.frame(char1, num1) # test1 데이터 프레임 생성.
test1
 
 
 
  1. 'A'
  2. 'A'
  3. 'B'
  4. 'B'
  5. 'C'
 
  1. 1
  2. 1
  3. 2
  4. 2
  5. 3
 
A data.frame: 5 × 2
char1 num1
<fct> <dbl>
A 1
A 1
B 2
B 2
C 3
 

 

 


 

데이터 프레임 자료 및 변수 추가

 
 
 
 
 
 
test3 <- rbind(test1, c("C",4)) # rbind row 행 추가
test3
test2 <- cbind(test1, married = c(T,T,T,F,F)) # cbind 열 추가
test2
 
 
 
A data.frame: 6 × 2
char1 num1
<fct> <chr>
A 1
A 1
B 2
B 2
C 3
C 4
 
A data.frame: 5 × 3
char1 num1 married
<fct> <dbl> <lgl>
A 1 TRUE
A 1 TRUE
B 2 TRUE
B 2 FALSE
C 3 FALSE
 

 

 


 

리스트 (list)

  • 서로 다른 데이터 형의 집합을 정의 할 필요가 있을 때 사용할 수 있는 데이터 구조
  • 리스트는 서로 다른 형태의 데이터로 구성됨.
 
 
 
 
 
 
test <- list("kim", c(94,82,92),c(T,F,T))
test
 
 
 
  1. 'kim'
    1. 94
    2. 82
    3. 92
    1. TRUE
    2. FALSE
    3. TRUE
 

 

 


 

리스트의 활용

  • 리스트 성분별 이름 정의하기
 
 
 
 
 
 
son <- list(son.name = c("Minsu","Minchul"), son.gender= c("Male","male"),
            son.age = c(2,6))
son
 
 
 
$son.name
  1. 'Minsu'
  2. 'Minchul'
$son.gender
  1. 'Male'
  2. 'male'
$son.age
  1. 2
  2. 6
 
 
 
 
 
 
son[[2]] # 리스트의 2 번째 성분
son[[3]][3] # 리스트의 3번째 성분의 2번째 요소
 
 
 
  1. 'Male'
  2. 'male'
 
<NA>
 
 
 
 
 
 
names(son) <- c("name","gender","age") # 리스트 성분 이름 변경
son
 
 
 
$name
  1. 'Minsu'
  2. 'Minchul'
$gender
  1. 'Male'
  2. 'male'
$age
  1. 2
  2. 6

 

댓글

Designed by JB FACTORY