티스토리 뷰

R Language

[R] 2. R 데이터 구조

OManager 2020. 3. 29. 01:39

1. 벡터(Vector)

명목데이터를 저장하며, 값의 순서가 있는 형식으로 모두 같은 형식(Type)으로 되어야 한다. 

벡터의 항목(element)으로 사용할 수 있는 데이터 형식은 integer, double, character, logical, NULL, NA 가 있다. 

1) 벡터의 기본 사용 

# CREATE VECTOR
name = c("John Doe", "Jane Doe", "Steve Graves")
temperature = c(98.1, 98.6, 101.4)
status = c(FALSE, FALSE, TRUE)

# 항목의 타입 확인
typeof(name)

# DISPLAY VECTOR
name
name[2]
name[2:3]
name[-2]
name[-2:-3]
name[c(TRUE, TRUE, FALSE)]

# DISPLAY VECTOR
name							# 전체 출력
name[2]							# 두번째 항목 출력
name[2:3]						# 두번째에서 3번째까지의 항목 출력
name[-2]						# 두번째 항목을 제외하고 출력
name[-2:-3]						# 두번째에서 3번째까지의 항목을 제외하고 출력
name[c(TRUE, TRUE, FALSE)]		# 논리값을 참조하여 출력(지정하지 않으면 TRUE)

# RESULT
# > typeof(name)
# [1] "character"
# > name
# [1] "John Doe"     "Jane Doe"     "Steve Graves"
# > name[2]
# [1] "Jane Doe"
# > name[2:3]
# [1] "Jane Doe"     "Steve Graves"
# > name[-2]
# [1] "John Doe"     "Steve Graves"
# > name[-2:-3]
# [1] "John Doe"
> name[c(TRUE, TRUE, FALSE)]
[1] "John Doe" "Jane Doe"
# > name[2:3]
# [1] "PSH" "SSH"
# > name[-2]
# [1] "PDM" "SSH" "NDR"
# > name[-2:-3]
# [1] "PDM" "NDR"
# > name[c(TRUE, TRUE, FALSE)]
# [1] "PDM" "PSH" "NDR"

 

2. 펙터(Factor)

범주 변수나 서열 변수만 사용가능한 데이터 형식이다. 

문자 벡터를 펙터로 사용할 경우 레이블은 한번만 저장하므로 메모리를 아낄수 있다. 

levels 옵션을 통하여 Levels을 지정할 수 있다. 

Ordered 옵션을 통하여 순서를 지정하고 크기를 비교할 수 있다.  

1) 펙터의 기본사용

# CREATE FACTOR
gender = factor(c("MALE", "FEMALE", "MALE"))                  # Basic
blood = factor(c("A", "AB", "O")                              # Levels Define
               , levels = c("A", "AB", "B", "O"))
symptoms = factor(c("severe", "mild", "moderate")             # Ordered Define
                  , levels = c("mild", "moderate", "severe")
                  , ordered = TRUE)

# Display factor
gender 
blood
symptoms
symptoms > "moderate"

# Result
# > gender 
# [1] MALE   FEMALE MALE  
# Levels: FEMALE MALE
# > blood
# [1] O  AB A 
# Levels: A AB B O
# > symptoms
# [1] severe   mild     moderate
# Levels: mild < moderate < severe
# > symptoms > "moderate"
# [1]  TRUE FALSE FALSE

 

3. 리스트(List)

리스트는 백터와 달리 다양한 타입을 저장할 때 사용 가능한 데이터 형식으로, 데이터베이스에서 Data Row 와 비슷하다. 

1) 리스트의 기본 사용 

# CREATE LIST
subject = list(FullName = name[1]
               , temperature = temperature[1]
               , status = status[1]
               , gender = gender[1]
               , blood = blood[1]
               , symptoms = symptoms[1])
               
# Display List
subject
subject[2]
subject[[2]]
subject$temperature
subject[c("temperature", "status")]

# Result
# > subject
# $FullName
# [1] "John Doe"

# $temperature
# [1] 98.1

# $status
# [1] FALSE

# $gender
# [1] MALE
# Levels: FEMALE MALE

# $blood
# [1] O
# Levels: A AB B O

# $symptoms
# [1] severe
# Levels: mild < moderate < severe

# > subject[2]
# $temperature
# [1] 98.1

# > subject[[2]]
# [1] 98.1
# > subject$temperature
# [1] 98.1
# > subject[c("temperature", "status")]
# $temperature
# [1] 98.1

# $status
# [1] FALSE

 

4. 데이터 프레임(Data Frame)

데이터 프레임은 데이터베이스의 테이블과 같은 구조이다. 

1) 데이터 프레임의 기본 사용 

# CREATE DATA FRAME
dFrame = data.frame(name
                    , temperature
                    , status
                    , gender
                    , blood
                    , symptoms
                    , stringsAsFactors = FALSE)
                    
# Display Data Frame
dFrame
dFrame$name
dFrame[c("temperature", "status")]
dFrame[1,2]
dFrame[c(1,3), c(2, 4)]
dFrame[,1]
dFrame[1,]
dFrame[,]
dFrame[c(1,3), c("temperature", "gender")]
dFrame[-2, c(-1, -3, -5, -6)]

# Result
# > dFrame
#           name temperature status gender blood symptoms
# 1     John Doe        98.1  FALSE   MALE     O   severe
# 2     Jane Doe        98.6  FALSE FEMALE    AB     mild
# 3 Steve Graves       101.4   TRUE   MALE     A moderate
# > dFrame$name
# [1] "John Doe"     "Jane Doe"     "Steve Graves"
# > dFrame[c("temperature", "status")]
#   temperature status
# 1        98.1  FALSE
# 2        98.6  FALSE
# 3       101.4   TRUE
# > dFrame[1,2]
# [1] 98.1
# > dFrame[c(1,3), c(2, 4)]
#   temperature gender
# 1        98.1   MALE
# 3       101.4   MALE
# > dFrame[,1]
# [1] "John Doe"     "Jane Doe"     "Steve Graves"
# > dFrame[1,]
#       name temperature status gender blood symptoms
# 1 John Doe        98.1  FALSE   MALE     O   severe
# > dFrame
#           name temperature status gender blood symptoms
# 1     John Doe        98.1  FALSE   MALE     O   severe
# 2     Jane Doe        98.6  FALSE FEMALE    AB     mild
# 3 Steve Graves       101.4   TRUE   MALE     A moderate
# > dFrame$name
# [1] "John Doe"     "Jane Doe"     "Steve Graves"
# > dFrame[c("temperature", "status")]
#   temperature status
# 1        98.1  FALSE
# 2        98.6  FALSE
# 3       101.4   TRUE
# > dFrame[1,2]
# [1] 98.1
# > dFrame[c(1,3), c(2, 4)]
#   temperature gender
# 1        98.1   MALE
# 3       101.4   MALE
# > dFrame[,1]
# [1] "John Doe"     "Jane Doe"     "Steve Graves"
# > dFrame[1,]
#       name temperature status gender blood symptoms
# 1 John Doe        98.1  FALSE   MALE     O   severe
# > dFrame[,]
#           name temperature status gender blood symptoms
# 1     John Doe        98.1  FALSE   MALE     O   severe
# 2     Jane Doe        98.6  FALSE FEMALE    AB     mild
# 3 Steve Graves       101.4   TRUE   MALE     A moderate
# > dFrame[c(1,3), c("temperature", "gender")]
#   temperature gender
# 1         98.1   MALE
# 3       101.4   MALE
# > dFrame[-2, c(-1, -3, -5, -6)]
#   temperature gender
# 1        98.1   MALE
# 3       101.4   MALE

# Add Column
dFrame$temp_c = (dFrame$temperature - 32) * (5 / 9)

# Display Data Frame
# > dFrame
#           name temperature status gender blood symptoms   temp_c
# 1     John Doe        98.1  FALSE   MALE     O   severe 36.72222
# 2     Jane Doe        98.6  FALSE FEMALE    AB     mild 37.00000
# 3 Steve Graves       101.4   TRUE   MALE     A moderate 38.55556

5. 배열(Array) or 행렬(Matrix)

데이터의 행과 열을 갖는 2차원의 표를 구성하는 데이터 구조로 수학 연산에서 가장 자주 사용되며, 수치 데이터만 저장

# Create Matrix
m1 = matrix(c(1,2,3,4), nrow=2 )
m2 = matrix(c(1,2,3,4), nrow=2, byrow=TRUE)
m3 = matrix(c(1,2,3,4,5,6), nrow=2)
m4 = matrix(c(1,2,3,4,5,6), ncol=2)

# Display Matrix
m1
m2
m3
m4[1,]
m4[,1]

# Result
# > m1
#      [,1] [,2]
# [1,]    1    3
# [2,]    2    4
# > m2
#      [,1] [,2]
# [1,]    1    2
# [2,]    3    4
# > m3
#      [,1] [,2] [,3]
# [1,]    1    3    5
# [2,]    2    4    6
# > m4
#      [,1] [,2]
# [1,]    1    4
# [2,]    2    5
# [3,]    3    6
# > m4[1,]
# [1] 1 4
# > m4[,1]
# [1] 1 2 3

 

'R Language' 카테고리의 다른 글

[R] 5. 회귀분석  (0) 2020.04.22
[R] 4. 행렬 기초 이론  (0) 2020.04.19
[R] 3. R을 이용한 데이터 관리  (0) 2020.03.31
[R] 1. R Program Install  (0) 2020.03.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함