변수와 데이터객체(구조) 유형
기본 데이터 구조
객체 유형 | 요소 | 차원 | 데이터 종류(동질성/이질성) | 관련 코드(함수) |
---|---|---|---|---|
스칼라(scalar) | 단수 | 1차원 | 숫자/문자/논리 유형 중의 한 가지 단수 데이터 | x ←3 |
벡터(vector) | 단수/복수 | 1차원 | 숫자/문자/논리 유형 중의 단일 유형으로만 구성 | x ←c( ) |
행렬(matrix) | 단수/복수 | 2차원 | 숫자/문자/논리 유형 중의 단일 유형으로만 구성 | x←matrix() |
배열(array) | 단수/복수 | 3차원 | 숫자/문자/논리 유형 중의 단일 유형으로만 구성 | x←array() |
스칼라 데이터 생성
a <- 2020
a1 <- '한국'
a5 <- '재밌는 데이터 분석'
a_bool <- TRUE
a_na <- NA
벡터 데이터 생성
x <- c(1,2,3,4:10,-5:-2)
# [1,2,3,4,5,6,7,8,9,10,-5,-4,-3,-2] 이런식으로 저장됩니다.
y <- c('코','로','나','조','심')
c( )
를 이용해서 벡터 데이터를 쉽게 생성할 수 있습니다.
벡터의 인덱싱과 연산
x
# 1 2 3 4 5 6 7 8 9 10 -5 -4 -3 -2 가 출력됩니다.
x[1]
# 다른 프로그래밍 언어와는 다르게 처음항목이 0번 index가 아니라 1번 index입니다.
# 따라서 1이 출력됩니다.
x[c(2,4)]
# index가 2이상이고 4이하인 값들을 출력해줍니다.
# 2 3 4가 출력됩니다.
# 만약 앞자리 숫자가 크면 앞자리수 이하 뒷자리수 이상 값들을 출력해줍니다.
마이너스(-)를 이용한 차집합 개념
x[-1]
# index가 1인 값들을 제외하고 출력합니다.
# 2 3 4 5 6 7 8 9 10 -5 -4 -3 -2가 출력됩니다.
x[-(3:5)]
# index가 3,4,5인 값들을 제외하고 출력합니다.
# 1 2 6 7 8 9 10 -5 -4 -3 -2
행렬 생성과 인덱싱
먼저 일반적인 방법으로 matrix를 생성하겠습니다.
먼저 nrow를 이용한 생성코드입니다.
mx <- matrix(data = c(92, 87, 38, NA, 99, 80),
nrow = 2)
# nrow는 row를 몇개 만들지 정하는 코드입니다.
# 출력값은 다음과 같습니다.
# 92 38 99
# 87 NA 80
다음은 ncol를 이용한 생성코드입니다.
mx <- matrix(data = c(92, 87, 38, NA, 99, 80),
ncol = 2)
# nrow는 row를 몇개 만들지 정하는 코드입니다.
# 출력값은 다음과 같습니다.
# 92 NA
# 87 99
# 38 80
다음은 벡터데이터 두개를 결합해서 matrix를 생성하겠습니다.
rbind를 이용하면 행을 기준으로 위아래로 데이터를 결합해 matrix를 생성해줍니다.
m1 <- c(10, -2, 5:7)
m2 <- c(2, 12:14, -5)
mxr <- rbind(m1, m2)
# 출력값은 다음과 같습니다.
# 10 -2 5 6 7
# 2 12 13 14 -5
다음은 cbind를 이용해 열을 기준으로 양옆으로 결합하겠습니다.
mxc <- cbind(m1,m2)
# 출력 값은 다음과 같습니다.
# 10 2
# -2 12
# 5 13
# 6 14
# 7 -5
이제 생성된 martrix에 col과 row에 name을 넣어주겠습니다.
x1 <- c(10,5,3,8:10)
# 10 5 3 8 9 10
x2 <- c(-2:0, 3,1,2)
# -2 -1 0 3 1 2
xr <- rbind(x1,x2)
xr
# [x1] 10 5 3 8 9 10
# [x2] -2 -1 0 3 1 2
rownames(xr)
# x1, x2
colnames(xr)
# NULL
rownames(mxr) <- c("맥북", "갤럭시북")
colnames(mxr) <- c("1월", "2월", "3월", "4월", "5월","6월")
rownames(xr)
# "맥북" "갤럭시북"
colnames(xr)
# "1월" "2월" "3월" "4월" "5월" "6월"
이제 인덱싱을 해보겠습니다.
xr['맥북',]
# 1월 2월 3월 4월 5월 6월
# 10 5 3 8 9 10
xr[c(1:2),]
# 1월 2월 3월 4월 5월 6월
# 맥북 10 5 3 8 9 10
# 갤럭시북 -2 -1 0 3 1 2
배열 생성 및 인덱싱
raw1 <- c(8, 10, 7, 16, NA, -1, 8, 4)
raw2 <- c(4, NA, 8, 7, -2, 17, -3, 10)
raw3 <- c(23, -9, NA, NA, 11, 9, 4, 12)
raw <- c(raw1, raw2, raw3)
raw; class(raw)
out <- array(data = c(raw1, raw2, raw3),
dim = c(4, 2, 3))
여기서 dim = c(4,2,3)은 row가 4개 col이 2개 layer를 3개 만들라는 용어 입니다.
다음은 이렇게 만든 배열에 이름을 지정해주겠습니다.
먼저 이런식으로 행렬과 레이어의 이름을 준비해주겠습니다.
mylayer <- c("US", "EU", "AP")
myrow <- c("1분기", "2분기", "3분기", "4분기")
mycol <- c("아이폰", "갤럭시")
다음이렇게 만든 이름들을 list로 바꿔준 후 dimnames( )를 이용해 이름을 지정해주겠습니다.
dimnames(out) <- list(myrow, mycol, mylayer)
out; class(out)
이 자료는 https://www.youtube.com/channel/UChPuesN49tcqQqYRQHrLCuw를 참조하여 작성하였습니다.
'Data·AI > R 데이터분석' 카테고리의 다른 글
R. 데이터셋 로딩하기 - 샘플데이터셋 (0) | 2020.08.21 |
---|---|
R. 변수와 데이터객체(구조) 유형 - 복합 데이터 구조 (0) | 2020.08.20 |
009.한국인의 삶을 파악하라! (종교 유무에 따른 이혼율, 지역별 연령대 비율) (0) | 2019.05.25 |
008.한국인의 삶을 파악하라! (직업별 월급차이, 성별 직업 빈도) (0) | 2019.05.25 |
007.한국인의 삶을 파악하라! (나이-월급, 연령대-월급, 연령대 및 성별 월급 차이) (0) | 2019.05.25 |
댓글