Chapter 1 : R ๊ธฐ์ด์ ๋ฐ์ดํฐ ๋งํธ
Chapter 2 : ํต๊ณ ๋ถ์ (๋ค์)
Chapter 3 : ์ ํ ๋ฐ์ดํฐ ๋ง์ด๋ (๋ค์)
1์ฅ R
R ์๊ฐ
- R์ ์คํ์์ค ํ๋ก๊ทธ๋จ์ผ๋ก ํต๊ณ, ๋ฐ์ดํฐ๋ง์ด๋์ ์ํ ์ธ์ด์ด๋ค.
- ์๋์ฐ, ๋งฅ, ๋ฆฌ๋ ์ค OS์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
- ๊ฐ์ฒด ์งํฅ ์ธ์ด์ด๋ฉฐ ํจ์ํ ์ธ์ด์ด๋ค. ์ฆ, ํต๊ณ ๊ธฐ๋ฅ๋ฟ๋ง ์๋๋ผ ์ผ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ฒ๋ผ ์๋ํํ๊ฑฐ๋ ์๋ก์ด ํจ์๋ฅผ ์์ฑํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅ
- ๊ฐ์ฒด ์งํฅ ์ธ์ด๋ ํ์ํ ๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๊ณจ๋ผ ์ถ์ถํ์ฌ ํ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ํจ์ํ ์ธ์ด๋ ๊น๋ํ๊ณ ๋จ์ถ๋ ์ฝ๋, ๋งค์ฐ ๋น ๋ฅธ ์ํ ์๋, ๋๋ฒ๊น ๋ ธ๋ ฅ ๊ฐ์, ๋ณ๋ ฌ ํ๋ก๊ทธ๋๋ฐ์ ์ ํ์ด ์ฉ์ดํ๋ค๋ ํน์ง์ ๊ฐ์ง๋ค.
R Studio
- ๋ฉ๋ชจ๋ฆฌ์ ๋ณ์๊ฐ ์ด๋ป๊ฒ ๋์ด์๋ ์ง์ ํ์ ์ด ๋ฌด์์ธ์ง๋ฅผ ๋ณผ ์ ์๊ณ ์คํฌ๋ฆฝํธ ๊ด๋ฆฌ์ ๋ํ๋จผํ ์ด์ ์ด ํธ๋ฆฌํ๋ค.
- ์คํฌ๋ฆฝํธ์ฉ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์ด๋ ต์ง ์๊ณ ์ฝ๊ฒ ์๋ํ๊ฐ ๊ฐ๋ฅํ๋ค.
2์ฅ R ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ด
• ํจํค์ง(Package)
- R ํจ์, ๋ฐ์ดํฐ ๋ฐ ์ปดํ์ผ๋ ์ฝ๋์ ๋ชจ์
- ํจํค์ง ์๋์ค์น: install.packages("ํจํค์ง")
- ํจํค์ง ์๋์ค์น: install.packages("ํจํค์ง๋ช ", "ํจํค์ง ์์น")
• ์คํฌ๋ฆฝํธ๋ก ํ๋ก๊ทธ๋๋ฐ ๋ ํ์ผ ์คํ
- source("ํ์ผ๋ช .R")
- pdf( ): ๊ทธ๋ํฝ ์ถ๋ ฅ์ pdf ํ์ผ๋ก ์ง์
•๋ฐฐ์น๋ชจ๋
- ์ฌ์ฉ์์ ์ธํฐ๋์ ์ด ํ์ํ์ง ์์ ๋ฐฉ์์ผ๋ก, ๋งค์ผ ์คํ๋์ด์ผ ํ๋ ํ๋ก๊ทธ๋จ์์ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ ๋ ์ ์ฉํ๋ค.
- ๋ฐฐ์นํ์ผ ์คํ ๋ช ๋ น: batch.R ์คํํ์ผ์ด ์๋ ์์น์์ ์๋์ฐ ์ฐฝ์ "R CMD BATCH batch.R" ๋ช ๋ น์ด ์คํ
•R ๋ช ๋ น์ด
· print( ): ์ถ๋ ฅ ํ์์ ์ง์ ํ ํ์ ์์. ํ ๋ฒ์ ํ๋์ ๊ฐ์ฒด๋ง ์ถ๋ ฅ
· cat( ): ์ฌ๋ฌ ํญ๋ชฉ์ ๋ฌถ์ด์ ์ฐ๊ฒฐ๋ ๊ฒฐ๊ณผ๋ก ์ถ๋ ฅ. ๋ณตํฉ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ(ํ๋ ฌ, list ๋ฑ)๋ฅผ ์ถ๋ ฅ ๋ถ๊ฐ
· ๋์ ์ฐ์ฐ์: " <-, <<-, =, ->"
· ๋ณ์ ๋ชฉ๋ก๋ณด๊ธฐ: ls( )
· ๋ณ์ ์ญ์ ํ๊ธฐ: rm( )
· ๋ฒกํฐ ์์ฑํ๊ธฐ: c( )
- ๋ฒกํฐ์ ์์ ์ค ํ๋๋ผ๋ ๋ฌธ์๊ฐ ์์ผ๋ฉด ๋ชจ๋ ์์์ ์๋ฃํ์ ๋ฌธ์ํํ๋ก ๋ณํ
· ์ง์ญ๋ณ์: ๋จ์ํ ๊ฐ์ ๋์ ํ๊ธฐ๋ง ํ๋ฉด ์ง์ญ๋ณ์๋ก ์์ฑ. ํจ์๊ฐ ์ข ๋ฃ๋๋ฉด ์ง์ญ๋ณ์๋ ์ญ์ ๋จ
· ์กฐ๊ฑด๋ถ ์คํ๋ฌธ: if๋ฌธ
· ๋ฐ๋ณต ์คํ๋ฌธ: for๋ฌธ, while๋ฌธ, repeat๋ฌธ
· ์ ์ญ๋ณ์: "<<-"๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ญ๋ณ์๋ฅผ ๋ณ๊ฒฝํ ์ ์์ง๋ง ์ถ์ฒํ์ง ์์
· ์์ด: "์์๊ฐ:๋๊ฐ". ์์๊ฐ์์ ์ต์ข ๊ฐ๊น์ง์ ์ฐ์์ ์ธ ์ซ์ ์์ฑ. seq( )ํจ์๋ ๊ฐ๊ฒฉ๊ณผ ๊ฒฐ๊ณผ๊ฐ์ ๊ธธ์ด๋ฅผ ์ ํ ๊ฐ๋ฅ
· ๋ฐ๋ณต: rep( ) ํจ์๋ ์ซ์๋ ๋ณ์์ ๊ฐ๋ค์ ๋ฐ๋ณตํด์ ์์ฑ ๊ฐ๋ฅ.
· ๋ฌธ์์ด ๋ถ์ด๊ธฐ: paste( ) ํจ์
· ๋ฌธ์์ด ์ถ์ถ: substr(๋ฌธ์์ด, ์์์ , ๋์ ) ํจ์๋ ๋ฌธ์์ด์ ํน์ ๋ถ๋ถ์ ์ถ์ถ ๊ฐ๋ฅ
· ๋ ผ๋ฆฌ๊ฐ: T๋ True, F๋ False
· ๋ ผ๋ฆฌ์ฐ์ฐ์
== | ๊ฐ๋ค |
!= | ๊ฐ์ง ์๋ค |
<, <= | ์๋ค, ์๊ฑฐ๋ ๊ฐ๋ค |
>, >= | ํฌ๋ค, ํฌ๊ฑฐ๋ ๊ฐ๋ค |
· ๋ฒกํฐ์ ์์ ์ ํํ๊ธฐ: V[n], n์ ์์์ ์๋ฆฟ์, ๋ ผ๋ฆฌํ ๋ฒกํฐ, ๋ฒกํฐ์ ์ด๋ฆ.
· ๋ฒกํฐ์ ์์ ์ ์ธํ๊ธฐ: V[-n], n์ ์ ์ธํ๊ณ ์ ํ๋ ์์์ ์๋ฆฟ์
• ๋ฒกํฐ์ ์ฐ์ฐ
· [, [[: ์ธ๋ฑ์ค
· $: ์์, ๋ณ์ ๋ฝ์๋ด๊ธฐ
· ^ : ์ง์ ๊ณ์ฐ. ์) 5^2 = 25
· -, +: ๋จํญ ๋ง์ด๋์ค, ํ๋ฌ์ค ๋ถํธ
· ":" : ์์ด ์์ฑ
· %/%: ๋๋์ ๊ฒฐ๊ณผ์ ๋ชซ ๋ฐํ
· %%: ๋๋์ ๊ฒฐ๊ณผ์ ๋๋จธ์ง ๋ฐํ
· %*%: ํ๋ ฌ ๊ณฑ
· *, / : ๊ณฑํ๊ธฐ, ๋๋๊ธฐ
· +, -: ๋ํ๊ธฐ, ๋ปฌ๊ธฐ
· ! : ๋ ผ๋ฆฌ ๋ถ์ . !T = F
· &: ๋ ผ๋ฆฌ "and".
· | : ๋ ผ๋ฆฌ "or".
· ~ : ์(formula)
· ->, ->>: ์ค๋ฅธ์ชฝ ๋์
· =: ์ค๋ฅธ์ชฝ์ ์ผ์ชฝ์ผ๋ก ๋์
· <-, <<-: ์ค๋ฅธ์ชฝ์ ์ผ์ชฝ์ผ๋ก ๋์
· ?: ๋์๋ง
• ๊ธฐ์ดํต๊ณ ๋ช ๋ น์ด
· mean(๋ณ์): ๋ณ์์ ํ๊ท ์ฐ์ถ
· sum(๋ณ์): ๋ณ์์ ํฉ๊ณ ์ฐ์ถ
· median(๋ณ์): ๋ณ์์ ์ค์๊ฐ ์ฐ์ถ
· log(๋ณ์): ๋ณ์์ ๋ก๊ทธ๊ฐ ์ฐ์ถ
· sd(๋ณ์): ๋ณ์์ ํ์คํธ์ฐจ ์ฐ์ถ
· var(๋ณ์): ๋ณ์์ ๋ถ์ฐ ์ฐ์ถ
· cov(๋ณ์1, ๋ณ์2): ๋ณ์ ๊ฐ ๊ณต๋ถ์ฐ ์ฐ์ถ
· cor(๋ณ์1, ๋ณ์2): ๋ณ์ ๊ฐ ์๊ด๊ณ์ ์ฐ์ถ
· length(๋ณ์): ๋ณ์์ ๊ธธ์ด๋ฅผ ๊ฐ์ผ๋ก ์ฐ์ถ
์ 3์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ
· ํ
์ด๋ธ๋ก ๋ ๋ฐ์ดํฐ ํ์ผ ์ฝ๊ธฐ (๋ณ์ ๊ตฌ๋ถ์ ํฌํจ): read.table("ํ์ผ์ด๋ฆ", sep="๊ตฌ๋ถ์")
· CSV ๋ฐ์ดํฐ ํ์ผ ์ฝ๊ธฐ(๋ณ์ ๊ตฌ๋ถ์๋ ์ผํ): read.csv("ํ์ผ์ด๋ฆ", header=T)
· CSV ๋ฐ์ดํฐ ํ์ผ๋ก ์ถ๋ ฅ(๋ณ์ ๊ตฌ๋ถ์๋ ์ผํ): write.csv(ํ๋ ฌ ๋๋ ๋ฐ์ดํฐํ๋ ์, "ํ์ผ์ด๋ฆ", row.names=F)
์ 4์ ๋ฐ์ดํฐ ํ๋ ์๊ณผ ๋ฐ์ดํฐ ๊ตฌ์กฐ
• ๋ฒกํฐ(Vector)
- ๋ฒกํฐ๋ค์ ๋์ง์ ์ด๋ค: ํ ๋ฒกํฐ์ ์์๋ ๋ชจ๋ ๊ฐ์ ์๋ฃํ์ ๊ฐ์ง๋ค.
- ๋ฒกํฐ๋ ์์น๋ก ์ธ๋ฑ์ค๋๋ค: V[2]๋ V๋ฒกํฐ์ 2๋ฒ์งธ ์์์ด๋ค.
- ๋ฒกํฐ๋ ์ธ๋ฑ์ค๋ฅผ ํตํด ์ฌ๋ฌ ๊ฐ์ ์์๋ก ๊ตฌ์ฑ๋ ํ์ ๋ฒกํฐ๋ฅผ ๋ฐํํ ์ ์๋ค.: V[c(2, 3)]์ V ๋ฒกํฐ์ 2๋ฒ์งธ, 3๋ฒ์งธ ์์๋ก ๊ตฌ์ฑ๋ ํ์๋ฒกํฐ
- ๋ฒกํฐ ์์๋ค์ ์ด๋ฆ์ ๊ฐ์ง ์ ์๋ค.
๊ธฐ๋ฅ | R ์ฝ๋ |
๋ฒกํฐ์ ๋ฐ์ดํฐ ์ถ๊ฐ |
v <- c(v, newItems) v[length(v)+1] <- newItems |
๋ฒกํฐ์ ๋ฐ์ดํฐ ์ฝ์ |
append(vec, newvalues, after=n) |
์์ธ ์์ฑ | f <- factor(v) f <- factor(v, levels) |
์ฌ๋ฌ ๋ฒกํฐ๋ฅผ ํฉ์ณ ํ๋์ ๋ฒกํฐ์ ์์ธ์ผ๋ก ๋ง๋ค๊ธฐ |
comb <- stack(list(v1=v1, v2=v2)) |
๋ฒกํฐ ๋ด ๊ฐ ์กฐํ |
V[c(1, 3, 5, 7)] V[-c(2, 4)] |
• ๋ฆฌ์คํธ(List)
- ๋ฆฌ์คํธ๋ ์ด์ง์ ์ด๋ค: ์ฌ๋ฌ ์๋ฃํ์ ์์๋ค์ด ํฌํจ๋ ์ ์๋ค.
- ๋ฆฌ์คํธ๋ ์์น๋ก ์ธ๋ฑ์ค๋๋ค: L[[2]]๋ L ๋ฆฌ์คํธ์ 2๋ฒ์งธ ์์์ด๋ค.
- ๋ฆฌ์คํธ์์ ํ์ ๋ฆฌ์คํธ๋ฅผ ์ถ์ถํ ์ ์๋ค.: L[c(2, 3)]์ L ๋ฆฌ์คํธ์ 2๋ฒ์งธ, 3๋ฒ์งธ ์์๋ก ์ด๋ฃจ์ด์ง ํ์ ๋ฆฌ์คํธ
- ๋ฆฌ์คํธ์ ์์๋ค์ ์ด๋ฆ์ ๊ฐ์ง ์ ์๋ค.: L[["Moe"]]์ L$Moe๋ ๋ ๋ค "Moe"๋ผ๋ ์ด๋ฆ์ ์์๋ฅผ ์ง์นญํ๋ค.
๊ธฐ๋ฅ | R ์ฝ๋ |
๋ฆฌ์คํธ ์์ฑ | L <- list(x, y, z) L <- list(valuename1=vec, valuename2= data) |
๋ฆฌ์คํธ ์์์ ํ |
L[[n]]: n๋ฒ์งธ ์์ L[c(n1, n2, … nk)]: ๋ชฉ๋ก |
์ด๋ฆ์ผ๋ก ๋ฆฌ์คํธ ์์์ ํ |
L[["name"]] L$name |
๋ฆฌ์คํธ์์ ์์ ์ ๊ฑฐ |
L[["name"]] <- NULL |
NULL ์์๋ฅผ ๋ฆฌ์คํธ์์ ์ ๊ฑฐ | L[sapply(L, is.null)] <- NULL L[is.na(L)] <- NULL |
• ํ๋ ฌ(Matrix)
- R์์๋ ์ฐจ์์ ๊ฐ์ง ๋ฒกํฐ๋ก ์ธ์
๊ธฐ๋ฅ | R ์ฝ๋ |
ํ๋ ฌ ์์ฑ | matrix(๋ฐ์ดํฐ, ํ๊ฐ์, ์ด๊ฐ์) e <- matrix(1:20, 4, 5) |
์ฐจ์ | dim(ํ๋ ฌ) |
๋๊ฐํ๋ ฌ | diag(ํ๋ ฌ) |
์ ์นํ๋ ฌ | t(ํ๋ ฌ) |
์ญํ๋ ฌ | solve(matrix) |
ํ๋ ฌ๊ณฑ | ํ๋ ฌ %*% ํ๋ ฌ |
ํ ์ด๋ฆ ๋ถ์ฌ | rownames(ํ๋ ฌ) <- c("ํ์ด๋ฆ") |
์ด ์ด๋ฆ ๋ถ์ฌ | colnames(ํ๋ ฌ) <- c("์ด์ด๋ฆ") |
ํ๋ ฌ ์ฐ์ฐ | ํ๋ ฌ + ํ๋ ฌ, ํ๋ ฌ - ํ๋ ฌ ํ๋ ฌ + ์์, ํ๋ ฌ - ์์, ํ๋ ฌ*์์ |
ํ๋ ฌ์์ ํ, ์ด ์ ํํ๊ธฐ | vec <- matrix[1, ] vec <- matrix[, 3] |
• ๋จ์ผ๊ฐ(scalars)
- R์์๋ ์์๊ฐ ํ๋์ธ ๋ฒกํฐ๋ก ์ธ์/์ฒ๋ฆฌ
• ๋ฐฐ์ด(Arrays)
- ํ๋ ฌ์ด 3์ฐจ์ ๋๋ n์ฐจ์๊น์ง ํ์ฅ๋ ํํ
- ์ฃผ์ด์ง ๋ฒกํฐ์ ๋ ๋ง์ ์ฐจ์์ ๋ถ์ฌํ์ฌ ์์ฑ
• ์์ธ(Factors)
- ๋ฒกํฐ์ฒ๋ผ ์๊ฒผ์ง๋ง, R์์๋ ๋ฒกํฐ์ ์๋ ๊ณ ์ ๊ฐ(unique value)์ ์ ๋ณด๋ฅผ ์ป์ด ๋ด๋๋ฐ, ์ด ๊ณ ์ ๊ฐ๋ค์ ์์ธ์ ์์ค(level)์ด๋ผ๊ณ ํ๋ค.
• ๋ฐ์ดํฐํ๋ ์(Data frame)
- ๋ฐ์ดํฐ ํ๋ ์ ๋ฆฌ์คํธ์ ์์๋ ๋ฒกํฐ ๋๋ ์์ธ์ด๋ค. ๋ฒกํฐ์ ์์ธ์ ๋ฐ์ดํฐ ํ๋ ์์ ์ด์ด๋ค.
- ๋ฒกํฐ์ ์์ธ๋ค์ ๋์ผํ ๊ธธ์ด์ด๋ค.
- ๋์ผํ ๋ฒกํฐ์ ์์ธ๋ค์ ๋ฐ์ดํฐํ๋ ์์ ์ฌ๊ฐํ์ผ๋ก ๋ง๋ ๋ค.
- ์ด์๋ ์ด๋ฆ์ด ์์ด์ผ ํ๋ค.
- ๊ฐ๊ฐ์ ์ด์ ๋ํด ๋ฌธ์ํ์ธ์ง ์์นํ์ธ์ง ์๋์ ์ผ๋ก ๊ตฌ๋ถ๋์ด ํธ๋ฆฌ
- ๋ฐ์ดํฐํ๋ ์์ ๋ฉ๋ชจ๋ฆฌ ์์์ ๊ตฌ๋๋๋ค.
๊ธฐ๋ฅ | R ์ฝ๋ |
๋ฐ์ดํฐํ๋ ์ ์์ฑ | data.frame(๋ฒกํฐ, ๋ฒกํฐ, ๋ฒกํฐ) |
ํ๊ฒฐํฉ | rbind(dfrm1, dfrm2) newdata <- rbind(data, row) |
์ด๊ฒฐํฉ | cbind(dfrm1, dfrm2) newdata <- cbind(data, col) |
๋ฐ์ดํฐํ๋ ์ ์กฐํ | dfrm[dfrm$gender="m"] dfrm[dfrm๋ณ์1>4 & dfrm๋ณ์ 2>5, c(๋ณ์3, ๋ณ์4)] dfrm[grep("๋ฌธ์", dfrm$๋ณ์1, ignore.case=T), c("๋ณ์2, ๋ณ์3")] subset(dfrm, select=๋ณ์, subset=์กฐ๊ฑด) |
๋ฐ์ดํฐ ์ ํ | lst1[[2]], lst1[2], lst1[2,], lst1[, 2] lst1[["name"]], lst1$name lst1[c("n1", "n2", .., "nk")] |
๋ฐ์ดํฐ ๋ณํฉ | merge(df1, df2, by="๊ณตํต์ด") |
์ด์ด๋ฆ ์กฐํ | colnames(๋ฐ์ดํฐํ๋ ์) |
ํ, ์ด ์ ํ | subset(dfm, select=์ด์ด๋ฆ) subset(dfm, select=c(์ด์ด๋ฆ1, ์ด์ด๋ฆ2, ์ด์ด๋ฆn)) subset(dfm, select=์ด์ด๋ฆ, subset(์กฐ๊ฑด)) |
์ด๋ฆ์ผ๋ก ์ด ์ ๊ฑฐ |
subset(dfm, select=-"์ด์ด๋ฆ") |
์ด์ด๋ฆ ๋ณ๊ฒฝ | colnames(dfm) <- newcolname |
NA ํ ์ญ์ | df <- na.omit(dfm) |
๋ฐ์ดํฐํ๋ ์ ํฉ์น๊ธฐ |
cbind_dfm <- cbind(dfm1, dfm2) rbind_dfm <- rbind(dfm1, dfm2) |
• ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฐ ์๋ฃํ ๋ณํ
๊ธฐ๋ฅ | R ์ฝ๋ |
์๋ฃํ ๋ณํ | as.character( ) as.integer( ) |
๊ตฌ์กฐ ๋ณํ | as.data.frame( ) as.list( ) as.matrix( ) |
• ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ณ๊ฒฝ
๊ธฐ๋ฅ | R ์ฝ๋ |
๋ฒกํฐ → ๋ฆฌ์คํธ | as.list(vector) |
๋ฒกํฐ → ํ๋ ฌ | 1์ด์ง๋ฆฌ ํ๋ ฌ: cbind(vector) ๋๋ as.matrix(vector) 1ํ์ง๋ฆฌ ํ๋ ฌ: rbind(vector) n * m ํ๋ ฌ: matrix(vector, n, m) |
๋ฒกํฐ → ๋ฐ์ดํฐํ๋ ์ |
1์ด์ง๋ฆฌ ๋ฐ์ดํฐํ๋ ์: as.data.frame(vector) 1ํ์ง๋ฆฌ ๋ฐ์ดํฐํ๋ ์: as.data.frame(rbind(vector)) |
๋ฆฌ์คํธ → ๋ฒกํฐ | unlist(list) |
๋ฆฌ์คํธ → ํ๋ ฌ | 1์ด์ง๋ฆฌ ํ๋ ฌ: as.matrix(list) 1ํ์ง๋ฆฌ ํ๋ ฌ: as.matrix(rbind(list)) n * m ํ๋ ฌ: matrix(list, n, m) |
๋ฆฌ์คํธ → ๋ฐ์ดํฐํ๋ ์ |
๋ฆฌ์คํธ ์์๋ค์ด ๋ฐ์ดํฐ์ ์ด์ด๋ฉด: as.data.frame(list) ๋ฆฌ์คํธ ์์๋ค์ด ๋ฐ์ดํฐ์ ํ์ด๋ฉด: rbind(list[[1]], list[[2]]) |
ํ๋ ฌ → ๋ฒกํฐ | as.vector(matrix) |
ํ๋ ฌ → ๋ฆฌ์คํธ | as.list(matrix) |
ํ๋ ฌ → ๋ฐ์ดํฐํ๋ ์ |
as.data.frame(matrix) |
๋ฐ์ดํฐํ๋ ์ → ๋ฒกํฐ | 1์ด์ง๋ฆฌ ๋ฐ์ดํฐํ๋ ์: dfm[[1]] ๋๋ dfm[, 1] 1ํ์ง๋ฆฌ ๋ฐ์ดํฐํ๋ ์: dfm[1, ] |
๋ฐ์ดํฐํ๋ ์ → ๋ฆฌ์คํธ | as.list(dfm) |
๋ฐ์ดํฐํ๋ ์ → ํ๋ ฌ |
as.matrix(dfm) |
• ๋ฒกํฐ์ ๊ธฐ๋ณธ ์ฐ์ฐ
๊ธฐ๋ฅ | R ์ฝ๋ |
๋ฒกํฐ ์ฐ์ฐ | ๋ฒกํฐ1 + ๋ฒกํฐ2 ๋ฒกํฐ1 - ๋ฒกํฐ2 ๋ฒกํฐ1 * ๋ฒกํฐ2 ๋ฒกํฐ1 ^ ๋ฒกํฐ2 |
ํจ์ ์ ์ฉ | sapply(๋ฒกํฐ, ์ฐ์ฐํจ์) |
ํ์ผ์ ์ฅ | write.csv(๋ณ์์ด๋ฆ, "ํ์ผ์ด๋ฆ") save(๋ณ์์ด๋ฆ, file=".RData") |
ํ์ผ์ฝ๊ธฐ | read.csv("ํ์ผ์ด๋ฆ") load("ํ์ผ.R") source("ํ์ผ.R") |
๋ฐ์ดํฐ ์ญ์ | rm(๋ณ์) rm(list=ls()) |
์ 5์ ๋ฐ์ดํฐ ๋ณํ
๊ธฐ๋ฅ | R ์ฝ๋ |
์์ธ์ผ๋ก ์ง๋จ์ ์ |
v <- c(24, 23, 52) w <- c(87, 86, 92) f <- factor(c("A", "B", "C") |
๋ฒกํฐ๋ฅผ ์ฌ๋ฌ ์ง๋จ์ผ๋ก ๋ถํ |
groups <- split(v, f) groups <- split(w, f) groups <- unstack(data.frame(v, f)) |
๋ฐ์ดํฐํ๋ ์์ ์ฌ๋ฌ ์ง๋จ์ผ๋ก ๋ถํ |
sp <- split(Car93MPG.city,Cars93Origin) |
๋ฆฌ์คํธ์ ๊ฐ ์์์ ํจ์ ์ ์ฉ |
lapply(๊ฒฐ๊ณผ๋ฅผ ๋ฆฌ์คํธ๋ก ๋ฐํ) list <- lapply(list, func) sapply(๊ฒฐ๊ณผ๋ฅผ ๋ฒกํฐ ๋๋ ํ๋ ฌ๋ก ๋ฐํ) vec <- sapply(list, func) |
ํ๋ ฌ์ ํจ์ ์ ์ฉ | m <- apply(mat, 1, func) m <- apply(mat, 2, func) |
๋ฐ์ดํฐํ๋ ์์ ํจ์ ์ ์ฉ |
dfm <- lapply(dfm, func) dfm <- sapply(dfm, func) dfm <- apply(dfm, func): ๋ฐ์ดํฐํ๋ ์์ด ๋์ง์ ์ธ ๊ฒฝ์ฐ๋ง(๋ชจ๋ ๋ฌธ์ or ์ซ์) ํ์ฉ ๊ฐ๋ฅ. ๋ฐ์ดํฐํ๋ ์์ ํ๋ ฌ๋ก ๋ณํ ํ ํจ์ ์ ์ฉ |
๋์ฉ๋ ๋ฐ์ดํฐ์ ํจ์ ์ ์ฉ | cors <- sapply(dfm, cor, y=targetVariable) mask <- (rank(-abs(cors)) <= 10) best.pred <- dfm[, mask] lm(targetVariable ~ bes.pred) |
์ง๋จ๋ณ ํจ์ ์ ์ฉ | tapply(vec, factor, func) |
๋ณ๋ ฌ ๋ฒกํฐ, ๋ฆฌ์คํธ ํจ์ ์ ์ฉ |
mapply(factor, v1, …, vk) mapply(factor, list1, …, list k) |
• ๋ฌธ์์ด, ๋ ์ง ๋ค๋ฃจ๊ธฐ
๊ธฐ๋ฅ | R ์ฝ๋ |
๋ฌธ์์ด ๊ธธ์ด | nchar("๋จ์ด") |
๋ฌธ์์ด ์ฐ๊ฒฐ | paste("word1", "word2", sep="-") |
๋ถ๋ถ ๋ฌธ์์ด ์ถ์ถ | substr("statistics", 1, 4) |
๊ตฌ๋ถ์๋ก ๋ฌธ์์ด ์ถ์ถ | strsplit(๋ฌธ์์ด, ๊ตฌ๋ถ์) |
ํ์ ๋ฌธ์์ด ๋์ฒด | sub(old, new, string) gsub(old, new, string) |
์๋ณ ์กฐํฉ | mat <- outer(๋ฌธ์์ด1, ๋ฌธ์์ด2, paste, sep="") |
ํ์ฌ ๋ ์ง ๋ฐํ | Sys.Date( ) |
๋ ์ง ๊ฐ์ฒด๋ก ๋ณํ | as.Date( ) format(Sys.Date(), format=%m%d%y) |
๋ ์ง ์กฐํ | format(Sys.Date(), "%a") ์์ผ format(Sys.Date(), "%b") ์ format(Sys.Date(), "%B") ์ format(Sys.Date(), "%d") ์ผ format(Sys.Date(), "%m") ์ format(Sys.Date(),"%y") ์ฐ๋ format(Sys.Date(), "%Y") ์ฐ๋ |
๋ ์ง ์ผ๋ถ ์ถ์ถ | d <- as.Date("2014-12-25") p <- as.POSIXlt(d) p$yday start <- as.Date("2014-12-01") end <- as.Date("2014-12-25") seq(from=start, to=end, by=1) |
3์ฅ ๋ฐ์ดํฐ ๋งํธ
์ 1์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋ฐ ์์ฝ
• ๋ฐ์ดํฐ ๋งํธ(Data Mart)
- ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค(DW)์ ์ฌ์ฉ์ ์ฌ์ด์ ์ค๊ฐ์ธต์ ์์นํ ๊ฒ์ผ๋ก, ํ๋์ ์ฃผ์ ๋๋ ํ๋์ ๋ถ์ ์ค์ฌ์ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ผ๊ณ ํ ์ ์๋ค.
- ๋ฐ์ดํฐ ๋งํธ ๋ด ๋๋ถ๋ถ์ ๋ฐ์ดํฐ๋ DW๋ก๋ถํฐ ๋ณต์ ๋์ง๋ง, ์์ฒด์ ์ผ๋ก ์์ง๋ ์๋ ์์ผ๋ฉฐ, ๊ด๊ณํ DB๋ ๋ค์ฐจ์ DB๋ฅผ ์ด์ฉํ์ฌ ๊ตฌ์ถํ๋ค.
- ๋์ผํ ๋ฐ์ดํฐ ์ ์ ํ์ฉํ ๊ฒฝ์ฐ ์ต์ ๋ถ์๊ธฐ๋ฒ๋ค์ ์ด์ฉํ๋ฉด ๋ถ์๊ฐ์ ์ญ๋์์๋ ๋ถ์ ํจ๊ณผ๊ฐ ํฌ๊ฒ ์ฐจ์ด๊ฐ ๋์ง ์๋๋ค.
- ๋ฐ์ดํฐ ๋งํธ๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ถํ๋๋์ ๋ฐ๋ผ ๋ถ์ ํจ๊ณผ๋ ํฌ๊ฒ ์ฐจ์ด๋๋ค.
• ์์ฝ๋ณ์
- ์์ง๋ ์ ๋ณด๋ฅผ ๋ถ์์ ๋ง๊ฒ ์ข ํฉํ ๋ณ์
- ๋ง์ ๋ชจ๋ธ์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์์ด ์ฌํ์ฉ์ฑ์ด ๋๋ค.
- ํฉ๊ณ, ํ์์ ๊ฐ์ด ๊ฐ๋จํ ๊ตฌ์กฐ์ด๋ฏ๋ก ์๋ํํ์ฌ ์ํฉ์ ๋ง๊ฒ ๋๋ ์ผ๋ฐ์ ์ธ ์๋ํ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ตฌ์ถ์ด ๊ฐ๋ฅ
- ์ฐ์ํ ๋ณ์๋ฅผ ๋ฒ์ฃผํํ์ฌ ์ฌ์ฉํด๋ ์ข๋ค.
• ํ์๋ณ์
- ์ฌ์ฉ์๊ฐ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๊ฑฐ๋ ํน์ ํจ์์ ์ํด ๊ฐ์ ๋ง๋ค์ด ์๋ฏธ๋ฅผ ๋ถ์ฌํ ๋ณ์์ด๋ค.
- ๋งค์ฐ ์ฃผ๊ด์ ์ผ ์ ์์ผ๋ฏ๋ก ๋ ผ๋ฆฌ์ ํ๋น์ฑ์ ๊ฐ์ถ์ด ๊ฐ๋ฐํด์ผ ํ๋ค.
- ํ์๋ณ์๋ ํน์ ์ํฉ์๋ง ์ ์๋ฏธํ์ง ์๋๋ก ๋ํ์ฑ์ ๋๊ฒ ์์ฑํด์ผ ํ๋ค.
• plyr์ ์ด์ฉํ ๋ฐ์ดํฐ ๋ถ์
- plyr์ apply ํจ์์ ๊ธฐ๋ฐํด ๋ฐ์ดํฐ์ ์ถ๋ ฅ๋ณ์๋ฅผ ๋์์ ๋ฐฐ์ด๋ก ์นํํ์ฌ ์ฒ๋ฆฌํ๋ ํจํค์ง
- split-apply-combine: ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆฌํ๊ณ ์ฒ๋ฆฌํ ๋ค์ ๋ค์ ๊ฒฐํฉํ๋ ๋ฑ ํ์์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
• data.table์ ์ด์ฉํ ๋ฐ์ดํฐ ๋ถ์
- data.table์ ํฐ ๋ฐ์ดํฐ๋ฅผ ํ์, ์ฐ์ฐ, ๋ณํฉํ๋ ๋ฐ ์์ฃผ ์ ์ฉํ๋ค.
· ๊ธฐ์กด data frame ๋ฐฉ์๋ณด๋ค ์๋ฑํ ๋น ๋ฅธ ์๋
- ํน์ column์ key ๊ฐ์ผ๋ก ์์ธ์ ์ง์ ํ ํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
- ๋น ๋ฅธ grouping๊ณผ ordering, ์งง์ ๋ฌธ์ฅ ์ง์ ์ธก๋ฉด์์ ๋ฐ์ดํฐํ๋ ์๋ณด๋ค ์ ์ฉํ๋ค.
์ 2์ ๋ฐ์ดํฐ ๊ฐ๊ณต
• Data Exploration
- ๋ฐ์ดํฐ ๋ถ์์ ์ํด ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ์ ์ํ๋ฅผ ํ์ ํ๋ค. head( ), summary( )
• ๋ณ์ ์ค์๋
- ๋ชจํ์ ์์ฑํ์ฌ ์ฌ์ฉ๋ ๋ณ์์ ์ค์๋๋ฅผ ์ดํผ๋ ๊ณผ์ ์ด๋ค.
• ๋ณ์์ ๊ตฌ๊ฐํ
- ์ ์ฉํ๊ฐ๋ชจํ, ๊ณ ๊ฐ ์ธ๋ถํ ๋ฑ ์์คํ ์ผ๋ก ๋ชจํ์ ์ ์ฉํ๊ธฐ ์ํด์๋ ๊ฐ ๋ณ์๋ค์ ๊ตฌ๊ฐํํด์ ๊ตฌ๊ฐ๋ณ๋ก ์ ์๋ฅผ ์ ์ฉํ ์ ์์ด์ผ ํ๋ค.
- bining: ์ฐ์ํ ๋ณ์๋ฅผ ๋ฒ์ฃผํ ๋ณ์๋ก ๋ณํํ๋ ๋ฐฉ์. ๊ฐ๊ฐ ๋์ผํ ๊ฐ์์ ๋ ์ฝ๋๋ฅผ 50๊ฐ ์ดํ์ ๊ตฌ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ ๋นํ์ฌ ๊ตฌ๊ฐ๋ค์ ๋ณํฉํ๋ฉด์ ๊ตฌ๊ฐ์ ์ค์ฌ๋๊ฐ๋ ๋ฐฉ์์ ๊ตฌ๊ฐํ ๋ฐฉ๋ฒ์ด๋ค.
์ 3์ ๊ธฐ์ด ๋ถ์ ๋ฐ ๋ฐ์ดํฐ ๊ด๋ฆฌ
• EDA(Exploratory Data Analysis)
- ๋ฐ์ดํฐ ๋ถ์์ ์์ ์ ์ฒด์ ์ผ๋ก ๋ฐ์ดํฐ์ ํน์ง์ ํ์ ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ค์ํ ๊ฐ๋๋ก ์ ๊ทผํ๋ค.
• ๊ฒฐ์ธก๊ฐ(Missing value)
- ๊ฒฐ์ธก๊ฐ ์์ฒด๊ฐ ์๋ฏธ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
- ๊ฒฐ์ธก๊ฐ์ด๋ ์ด์๊ฐ์ ๊ผญ ์ ๊ฑฐํด์ผ ํ๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ ๋ถ์์ ๋ชฉ์ ์ด๋ ์ข ๋ฅ์ ๋ฐ๋ผ ์ ์ ํ ํ๋จ์ด ํ์
• ๊ฒฐ์ธก๊ฐ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ(Imputation)
· ๋จ์ ๋์น๋ฒ(Simple imputation)
- completes analysis: ๊ฒฐ์ธก๊ฐ์ด ์กด์ฌํ๋ ๋ ์ฝ๋๋ฅผ ์ญ์ ํ๋ค
- mean imputation: ๊ด์ธก ๋๋ ์คํ์ ํตํด ์ป์ด์ง ๋ฐ์ดํฐ์ ํ๊ท ์ผ๋ก ๋์นํ๋ค.
1) ๋น์กฐ๊ฑด๋ถ ํ๊ท ๋์น๋ฒ: ๊ด์ธก ๋ฐ์ดํฐ์ ํ๊ท
2) ์กฐ๊ฑด๋ถ ํ๊ท ๋์น๋ฒ: ํ๊ท๋ถ์์ ํ์ฉ
· single stochastic imputation: ํ๊ท ๋์น๋ฒ์์ ์ถ์ ๋ ํ์ค ์ค์ฐจ์ ๊ณผ์ ์ถ์ ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ณ ์ ๊ณ ์๋ ๋ฐฉ๋ฒ์ผ๋ก Hot-deck, nearest-neighbour ๋ฐฉ๋ฒ ๋ฑ์ด ์๋ค.
· ๋ค์ค ๋์น๋ฒ(Multiple imputation)
- ๋จ์ ๋์น๋ฒ์ ํ ๋ฒ ์ ์ฉํ์ง ์๊ณ m๋ฒ์ ๋์น๋ฅผ ํตํด m๊ฐ์ ๊ฐ์์ ์์ ์๋ฃ๋ฅผ ์์ฑ
• R์์ ๊ฒฐ์ธก๊ฐ ์ฒ๋ฆฌ
· ๋๋คํฌ๋ ์คํธ๋ ๊ฒฐ์ธก๊ฐ์ด ์กด์ฌํ ๊ฒฝ์ฐ, ์๋ฌ ๋ฐ์: randomForest ํจํค์ง์ rfImpute() ํจ์๋ฅผ ํ์ฉํ์ฌ ๊ฒฐ์ธก๊ฐ์ ๋์นํ ํ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉ
· complete.cases(): ๋ฐ์ดํฐ ๋ด ๋ ์ฝ๋์ ๊ฒฐ์ธก๊ฐ์ด ์์ผ๋ฉด FALSE, ์์ผ๋ฉด TRUE ๋ฐํ
· is.na(): ๊ฒฐ์ธก๊ฐ์ด NA์ธ์ง ์ฌ๋ถ๋ฅผ ๋ฐํ
· DMwR::centralImputation(): NA ๊ฐ์ ๊ฐ์ด๋ฐ ๊ฐ(central value)์ผ๋ก ๋์น. ์ฐ์ํ ๋ณ์ - ์ค์๊ฐ, ๋ฒ์ฃผํ ๋ณ์ - ์ต๋น๊ฐ
· DMwR::knnImputation(): NA ๊ฐ์ knn ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋์น. k๊ฐ ์ฃผ๋ณ ์ด์๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ ๋ คํ์ฌ ๊ฐ์ค ํ๊ท ํ ๊ฐ์ ์ฌ์ฉ
• ์ด์๊ฐ(Outlier)
- ์๋ํ์ง ์๊ฒ ์๋ชป ์ ๋ ฅํ ๊ฒฝ์ฐ
- ์๋ํ์ง ์๊ฒ ์ ๋ ฅ๋์์ผ๋ ๋ถ์ ๋ชฉ์ ์ ๋ถํฉ๋์ง ์์ ์ ๊ฑฐํด์ผ ํ๋ ๊ฒฝ์ฐ
- ์๋ํ์ง ์์ ํ์์ด์ง๋ง ๋ถ์์ ํฌํจํด์ผ ํ๋ ๊ฒฝ์ฐ
- ์๋๋ ๋ถ๋(fraud)์ธ ๊ฒฝ์ฐ
• ์ด์๊ฐ ํ์ง(detection)
- ESD(Extreme Studentized Deviation): ํ๊ท ์ผ๋ก๋ถํฐ 3 ํ์คํธ์ฐจ ๋จ์ด์ง ๊ฐ
- (๊ธฐํํ๊ท - 2.5 * ํ์คํธ์ฐจ < data < ๊ธฐํํ๊ท + 2.5 * ํ์คํธ์ฐจ)์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฐ
- (-1.5 * IQR(Q3-Q1) < data < 1.5 * IQR)์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฐ
• ๊ทน๋จ๊ฐ ์ ๋จ(trimming)
- ๊ธฐํํ๊ท ์ ์ด์ฉํ ์ ๊ฑฐ
- ์, ํ์ 5%์ ํด๋น๋๋ ๋ฐ์ดํฐ ์ ๊ฑฐ
• ๊ทน๋จ๊ฐ ์กฐ์ (winsorizing)
- ์ํ๊ฐ๊ณผ ํํ๊ฐ์ ๋ฒ์ด๋๋ ๊ฐ๋ค์ ์ํ, ํํ๊ฐ์ผ๋ก ๋ฐ๊พธ์ด ํ์ฉํ๋ ๋ฐฉ๋ฒ
'๐์๊ฒฉ์ฆ > ๐ADsP(๋ฐ์ดํฐ๋ถ์์ค์ ๋ฌธ๊ฐ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ADsP] ์๊ฒฉ์ฆ์ ๊ฐ์น๋ ์ด๋์ ๋์ผ๊น? (feat.๊ณต๊ธฐ์ ) (0) | 2021.11.02 |
---|---|
๋น์ ๊ณต์ ADSP ํฉ๊ฒฉ ํ๊ธฐ (0) | 2021.09.26 |
[ADsP 2๊ณผ๋ชฉ] ์ด๊ฐ๋จ ์์ฝ ์ ๋ฆฌ + 30ํ ๊ธฐ์ถ๋ฌธ์ (0) | 2021.09.02 |
[ADsP 1๊ณผ๋ชฉ] ์ด๊ฐ๋จ ์์ฝ ์ ๋ฆฌ + 30ํ ๊ธฐ์ถ๋ฌธ์ (0) | 2021.09.02 |
[3๊ณผ๋ชฉ] ์๊ณ์ด ๋ถ์ (0) | 2021.09.02 |