데이터 타입 = 변수 타입 = 자료형
함수에 따라 적용 가능한 변수타입이 다르기 때문에, 분석 전에 타입을 확인해야함
변수 종류
1) 연속 변수: numeric 타입
- 연속 변수는 숫자형 데이터로 표현되며, 값이 연속적이며 크기를 의미
- ex) 나이, 키, 몸무게, 매출액 등
- 연속 변수는 수학적 연산(더하기, 빼기, 곱하기 등)이 가능
2) 범주 변수: factor 타입
- 범주 변수는 이산적인 값을 가지며, 특정 범주나 집단을 나타냄
- 값이 대상을 분류하는 의미.
- ex) 성별(남/여), 혈액형(A/B/AB/O형), 직업(의사/교사/회사원 등)
- 범주 변수는 수학적 연산이 불가능
var1 <- c(1,2,3,1,2) # numeric 변수 생성
var2 <- factor(c(1,2,3,1,2)) # factor 변수 생성
var1 # numeric 변수 출력
## [1] 1 2 3 1 2
var2 # factor 변수 출력
## [1] 1 2 3 1 2
## Levels: 1 2 3
numeric 변수 : c()
factor 변수 : factor()
변수 타입 확인하기 : class()
class(var1)
## [1] "numeric"
class(var2)
## [1] "factor"
factor 변수의 구성 범주 확인 : levels
var <- factor(c("a","b","b","c")) #문자로 구성된 factor 변수 만들기
levels(var)
##[1] "a" "b" "c"
변수 타입
Data Type | 의미 | 값 |
numeric | 실수 | 1, 2.5 |
integer | 정수 | 1, 5, 7 |
complex | 복소수 | 5+4i |
character | 문자 | "female", "123", "yes" |
logical | 논리 | TRUE, FALSE, T,F |
factor | 범주 | A, B, AB, O |
Date | 날짜 | "2024-07-05", "2024/07/05" |
logical 논리에서 "TRUE", "FALSE" 는 대문자로 쓰기
변수 타입을 강제로 바꿀 수 있는데 이를 변환 함수라고 함
함수 | 기능 |
as.numeric() | numeric으로 변환 |
as.factor() | factor로 변환 |
as.character() | character로 변환 |
as,Date() | Date로 변환 |
as.data.frame() | Data Frame으로 변환 |
처음에 말했듯이 함수에 따라 적용가능한 변수타입이 있기 때문에 알아두면 좋음!
데이터구조
- 벡터 : 하나의 값, 여러개의 값, 같은 데이터 타입
a <- 3
a
##[1] 3
b <- c(1,2,3,4,5)
b
##[1] 1 2 3 4 5
c <- "hi"
c
##[1] "hi"
d <- c("a","b","c","a")
d
##[1] "a" "b" "c" "a"
class(a)
##[1] "numeric"
class(b)
##[1] "numeric"
class(c)
##[1] "character"
class(d)
##[1] "character"
a와 b는 numeric, 숫자로 구성
c와 d는 character: 문자로 구성됨
2. 데이터 프레임
행과 열로 구성된 2차원, 열들이 서로 다른 데이터 타입 가질 수 있음
df <- data.frame(var1 = c(1,2,3), #숫자벡터
+ var2 = c("a","b","c")) #문자벡터
df # 행이 3개고 열이 2개인 데이터프레임, 서로 다른 타입을 가진 열을 저장함
## var1 var2
##1 1 a
##2 2 b
##3 3 c
class(df)
##[1] "data.frame"
class(df$var1)
##[1] "numeric"
class(df$var2)
##[1] "character"
var1은 숫자, var2는 문자이지만 데이터 프레임으로 한번에 저장할 수 있음
3. 매트릭스
행과 열로 구성된 2차원, 같은 데이터 타입만 저장 가능
mx <- matrix(c(1:12), ncol = 4)
mx
## [,1] [,2] [,3] [,4]
##[1,] 1 4 7 10
##[2,] 2 5 8 11
##[3,] 3 6 9 12
class(mx)
##[1] "matrix" "array"
ncol : 열의 개수를 지정해줌
4. 어레이
행과 열로 구성된 매트릭스가 여러 겹이 있는 구조
#1~18까지 만들건데, 행이 3개, 열이 6개, 층이 3개
ar <- array(1:18, dim = c(3,6,3))
ar
##, , 1 #1번째 층
## [,1] [,2] [,3] [,4] [,5] [,6]
##[1,] 1 4 7 10 13 16
##[2,] 2 5 8 11 14 17
##[3,] 3 6 9 12 15 18
##, , 2 #2번째 층
## [,1] [,2] [,3] [,4] [,5] [,6]
##[1,] 1 4 7 10 13 16
##[2,] 2 5 8 11 14 17
##[3,] 3 6 9 12 15 18
##, , 3 #3번째 층
## [,1] [,2] [,3] [,4] [,5] [,6]
##[1,] 1 4 7 10 13 16
##[2,] 2 5 8 11 14 17
##[3,] 3 6 9 12 15 18
class(ar)
##[1] "array"
5. 리스트
모든 데이터 구조를 저장할 수 있음
ls <- list(list1 = a,
+ list2 = df,
+ list3 = mx,
+ list4 = ar)
ls
##$list1
##[1] 3
##$list2
## var1 var2
##1 1 a
##2 2 b
##3 3 c
##$list3
## [,1] [,2] [,3] [,4]
##[1,] 1 4 7 10
##[2,] 2 5 8 11
##[3,] 3 6 9 12
##$list4
##, , 1
## [,1] [,2] [,3] [,4] [,5] [,6]
##[1,] 1 4 7 10 13 16
##[2,] 2 5 8 11 14 17
##[3,] 3 6 9 12 15 18
##, , 2
## [,1] [,2] [,3] [,4] [,5] [,6]
##[1,] 1 4 7 10 13 16
##[2,] 2 5 8 11 14 17
##[3,] 3 6 9 12 15 18
##, , 3
## [,1] [,2] [,3] [,4] [,5] [,6]
##[1,] 1 4 7 10 13 16
##[2,] 2 5 8 11 14 17
##[3,] 3 6 9 12 15 18
class(ls)
##[1] "list"
벡터, 데이터프레임, 매트릭스, 어레이 모두 저장 가능한게 어레이임
# 벡터를 꺼내서 사용하기
ls$list1
vec <- ls$list1
vec #꺼내서 새로운 변수에 저장가능함
# = a
# 데이터프레임을 꺼내서 사용하기
ls$list2
# 매트릭스를 꺼내서 사용하기
ls$list3
# 어레이를 꺼내서 사용하기
ls$list4
어레이의 요소를 꺼내서 따로 저장고 가능함!
정리!
데이터 구조 | 차원 | 특징 |
벡터(Vactor) | 1차원 | 한 가지 변수 타입으로 구성 |
데이터 프레임(Data Frame) | 2차원 | 다양한 변수 타입으로 구성 |
매트릭스(Matrix) | 2차원 | 한 가지 변수 타입으로 구성 |
어레이(Arrary) | 다차원 | 2차원 이상의 매트릭스 |
리스트(List) | 다차원 | 서로 다른 데이터 구조 포함 |
후..오늘은 여기까지 안녕~
가독성이 떨어지는 것 같은데 고민을 해봐야겠다
'R' 카테고리의 다른 글
R dplyr 패키지 이용하기 - %>% 파이프라인 연산자 (1) | 2024.07.08 |
---|---|
R 기초문법 - 변수명 수정 rename, 조건문 ifelse (0) | 2024.07.08 |
R 기초문법 - 외부데이터 가져오기, csv 파일 읽기, text 파일 읽기 (0) | 2024.07.06 |
R 기초문법 - install.packages() 패키지 설치하기 (2) | 2024.07.04 |
R 기초문법 - seq, paste, summary (0) | 2024.07.04 |