๐ป IT
-
๋น ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ R (1)2024.04.19
๋น ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ R (3)
์์ฌ๊ฒฐ์ (Decision Making)
- ํ๋ ์ด์์ ์กฐ๊ฑด์ ํ๊ฐํ์ฌ ๊ทธ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ค์ํ ํ๋ฆ์ผ๋ก ๋ช ๋ น๋ฌธ์ ์ํํ๋ ๊ตฌ์กฐ
- R์์๋ if๋ฌธ, if~else๋ฌธ, switch๋ฌธ์ ์ ๊ณต
- ์์ฌ๊ฒฐ์ ๊ตฌ์กฐ์ ์ฉ๋
if๋ฌธ : ์กฐ๊ฑด์ด ์ฐธ์ผ ๋๋ง ๋ช ๋ น๋ฌธ์ ์ํ
- ์กฐ๊ฑด์ด ์ฐธ(TRUE)์ธ ๊ฒฝ์ฐ์๋ง ๋ช ๋ น์ด ์ํ
- ๊ฐ์ฅ ๋จ์ํ ์์ฌ๊ฒฐ์ ๊ตฌ์กฐ
x<-36L
if(is.integer(x)){
print("x๋ ์ ์")
}
[1] "x๋ ์ ์"
if~esle๋ฌธ : ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ณ๊ฐ์ ๋ช ๋ น๋ฌธ์ ์ํ
- ์กฐ๊ฑด์ด ์ฐธ(TRUE)์ธ ๊ฒฝ์ฐ์ ๊ฑฐ์ง(FALSE)์ธ ๊ฒฝ์ฐ ์๋ก ๋ค๋ฅธ ๋ช ๋ น๋ฌธ์ ์ํํ๋ ์์ฌ๊ฒฐ์ ๊ตฌ์กฐ
x<-3.14
if(is.integer(x)){
print("์ ์์
๋๋ค")
}else{
print("์ ์๊ฐ ์๋๋๋ค")
}
[1] "์ ์๊ฐ ์๋๋๋ค"
switch๋ฌธ : ๋ค์ํ ๊ฐ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ณ๊ฐ์ ๋ช ๋ น๋ฌธ์ ์ํ
- ์กฐ๊ฑด์ด ์ผ์นํ๋ ๊ฒฝ์ฐ(case)์ ๋ช ๋ น๋ฌธ์ ์คํ
- ์กฐ๊ฑด์ด ๋ค์๋ก์ ๋ถ๊ธฐ๋ฅผ ๊ฐ์ง ๋ ์ ๋ฆฌ
- ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌ๋ฆฌ ๊ธฐ๋ณธ๊ฐ(default)์ด ์์
x<-"han"
switch(x, "kim"="๊น", "lee"="์ด", "han"="ํ")
[1] "ํ"
๋ฃจํ(Loop)
- ํน์ ํ ๋ช ๋ น๋ฌธ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฌ๋ฌ๋ฒ ์คํํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ ๊ตฌ์กฐ
- ์ข ๋ฅ : repeat ๋ฃจํ, while ๋ฃจํ, for ๋ฃจํ
repeat ๋ฃจํ
- ๋ฌดํํ ๋ฐ๋ณตํ์ฌ ๋ช ๋ น๋ฌธ์ ์คํํ๋ ๊ตฌ์กฐ
- if๋ฌธ๊ณผ break๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๋ณต์์ ํ์ถํ ์ ์์
i<-1
repeat {
i<-i+1
if(i==3) { #๋ฐ๋ณตํ๋ค i๊ฐ 3์ด ๋๋ฉด ์๋ ์คํํ break
print(i)
break
}
}
[1] 3
while ๋ฃจํ
- ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด ๋์ผํ ๋ช ๋ น๋ฌธ์ ๋ค์ ์คํํ๋ ๋ฃจํ
- ๋ช ๋ น๋ฌธ์ ์คํ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ด ๋๋ฉด ๋ฐ๋ณต๋ฌธ์ผ๋ก๋ถํฐ ํ์ถํ๋ ๊ฒ์ด ๊ฐ๋ฅ
i<-1
while(i<3) { #i๊ฐ 3๋ฏธ๋ง์ธ ๊ฒฝ์ฐ ๊ณ์ ๋ฐ๋ณต
i<-i+1
}
i
[1] 3
for ๋ฃจํ
- ๋ฒกํฐ์ ๊ฐ ์ฑ๋ถ์ ๋ฐ๋ผ ๋ฐ๋ณตํ๋ ๋ฃจํ ๊ตฌ์กฐ
- ๋ฒกํฐ ์ฑ๋ถ์ ์์น(index)์ ์ผ์ผํ ์ ๊ทผํ์ง ์์ผ๋ฏ๋ก ๋ฒกํฐ ์ฑ๋ถ๋ณ ๋ช ๋ น๋ฌธ์ ์ํํ๋ ๊ตฌ์กฐ์ผ๋ ์ ๋ฆฌ
- ๋ฒกํฐ ์ฑ๋ถ์ ๊ฐ์ ๋์ ํ๊ธฐ ์ํ ๋ณ์ ์ง์ ํ์
v<-c(2,3,5,7,10)
s<-0 #s๋ณ์ 0์ผ๋ก ์ด๊ธฐํ
for(ve in v) { #v์์ ๋ค์ด์๋ ๋ณ์๋ค์ ve์์ ๋ฃ๋๋ค
s<-s+ve #s๋ณ์ ์์ s+ve๊ฐ์ ๋ฃ์ด๋ผ
}
print(s)
[1] 27
๋ฃจํ ์ ์ด ๋ช ๋ น๋ฌธ
break๋ฌธ : ํ์ฌ ์คํ์ค์ธ ๋ฃจํ๋ฌธ์ ์ค๋จํ๊ณ , ๋ฃจํ๋ฌธ ์ดํ ๋ช ๋ น๋ฌธ๋ถํฐ ์คํํ๋ค.
next๋ฌธ : ํ์ฌ ์คํ์ค์ธ ๋ฃจํ๋ฌธ์ ์ค๋จํ๊ณ , ๋ฃจํ๋ฌธ์ ์ฒ์์ผ๋ก ๋๋์๊ฐ ๋ช ๋ น๋ฌธ์ ์คํํ๋ค.
next์์
v<-1:10
for(ve in v) {
if(ve%%2 != 0) { # %%:๋๋จธ์ง ์ฐ์ฐ์
next
}
print(ve)
}
[1] 2
[1] 4
[1] 6
[1] 8
[1] 10
# ve๋ฅผ 2๋ก ๋๋ ๋๋จธ์ง ๊ฐ์ด 1์ด๋ฉด next(์ฒ์ for๋ฌธ)์ผ๋ก ๋๋์๊ฐ๋ค
# ์ฆ, 1~10์ซ์ ์ค ์ง์๋ง print๋ก ๋์ด๊ฐ
ํจ์(Functions)
- ํน์ ํ ์์ ์ ์ํํ๋ ๋ช ๋ น๋ฌธ๊ณผ ๊ตฌ์กฐ๋ฅผ ๋์ดํ ์งํฉ
๊ธฐ๋ณธ ํจ์(built-in functions) : R์์ ๊ธฐ๋ณธ์ผ๋ก ์ ์๋์ด ์๋ ํจ์
#์ฌ์ฉ ๋ฐฉ๋ฒ
<ํจ์๋ช
>(<์
๋ ฅ์ธ์1>,<์
๋ ฅ์ธ์2>,...)
<ํจ์๋ช
>(์
๋ ฅ์ธ์๋ช
1=<์
๋ ฅ์ธ์1>,์
๋ ฅ์ธ์๋ช
2=<์
๋ ฅ์ธ์2>,...)
#์์
mean(c(88,96,92)) #mean(ํ๊ท ์ ๋ด๋ ํจ์)๊ณผ cํจ์์ ํธ์ถ
png(file="result.png") #์
๋ ฅ์ธ์๋ช
์ ์ง์ ํ์ฌ ํธ์ถ
์ฌ์ฉ์ ์ ์ ํจ์(user-defined functions) : ์ฌ์ฉ์๊ฐ ์์ ์ ๋ชฉ์ ์ ๋ง๊ฒ๋ ํจ์๋ช , ๋ช ๋ น๋ฌธ, ์คํ๊ตฌ์กฐ, ์ ๋ ฅ์ธ์, ์ถ๋ ฅ์ธ์๋ฅผ ์ง์ ํ ํจ์
- ํ์ ์์ : ํจ์๋ช , function ํค์๋, ์ค๊ดํธ ๋ฑ
- ์ ํ ์์ : ์ ๋ ฅ์ธ์, ์ถ๋ ฅ์ธ์, ์ ๋ ฅ์ธ์๋ช ๋ฑ
# ์ฌ์ฉ์ ์ ์ ํจ์ ์์ฑ ๋ฌธ๋ฒ
<ํจ์๋ช
><-function((์
๋ ฅ์ธ์๋ช
1=)<์
๋ ฅ์ธ์1>,...) {
... #ํจ์๊ฐ ํธ์ถ๋๋ฉด ์คํํ ๋ช
๋ น๋ฌธ ๋ฐ ๊ตฌ์กฐ
}
#์์
myFunc<-function(v) { #์ฌ์ฉ์ ์ ์ ํจ์ myFunc()
s<-0
for(ve in v) {
s<-s+v
}
return(s)
}
myFunc(c(2,3,7) #์ฌ์ฉ์ ์ ์ ํจ์ ํธ์ถ
[1] 6 9 21
'๐ป IT > ๋น ๋ฐ์ดํฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐ์ดํฐ ํต๊ณ ๋ถ์(2) (0) | 2024.04.23 |
---|---|
๋ฐ์ดํฐ ํต๊ณ ๋ถ์(1) (1) | 2024.04.23 |
๋น ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ R (2) (1) | 2024.04.20 |
๋น ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ R (1) (0) | 2024.04.19 |
๋น ๋ฐ์ดํฐ ์ ์ฅ์ (1) | 2024.04.18 |
๋น ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ R (2)
๋ฐ์ดํฐํ์ ์ข ๋ฅ
๋ ผ๋ฆฌํ(Logical):True(์ฐธ), False(๊ฑฐ์ง)์ ๊ฐ์ ๊ฐ์ง
1 <- TRUE
class(1)
[1] "logical"
# ๋ณ์ 1์ TRUE๊ฐ์ ๋์
ํ ๋ฐ์ดํฐ ํ์ ์ถ๋ ฅ์ "locial"์ถ๋ ฅ
์ซ์ํ(numeric): ์ค์๋ฅผ ํํํ๊ธฐ ์ํ ๋ฐ์ดํฐํ
n<-3.1415
class(n)
[1] "numeric"
์ ์ํ(integer): ์์์ ์ด ์๋ ์ ์๋ฅผ ํํ
i<-1147L
class(i)
[1] "integer"
# ์์์ ์ด ์๋ ์ ์ ํํ์ ๋์ 'L'์ ์ ๋๋ค
๋ณต์์ํ(complex): ๋ณต์์๋ฅผ ํํํ๊ณ ์ ํ ๋ ์ฌ์ฉ
c<-3+5i
class(c)
[1] "complex"
# '3'์ ์ค์, '5i'๋ ํ์๋ฅผ ๋ํ๋ธ๋ค
๋ฌธ์ํ(character):๋ฌธ์ ๋๋ ๋ฌธ์์ด์ ํํํ ๋ ์ฌ์ฉ
s<-"hello"
class(s)
[1] "character"
์ํ(raw): ์ปดํจํฐ ์์คํ ์์ ํํํ๋ ๊ธฐ๋ณธ ํํ
r<-charRoRaw("hello")
r
[1] 68 65 6c 6c 6f
# charToRaw = ๋ฌธ์๋ฅผ ์ํ์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ํจ์
R๊ฐ์ฒด
๋ฐฑํฐ(Vectors)
- ๋ค์์ ๊ฐ์ ๋ด๊ณ ์๋ R๊ฐ์ฒด
- ๋ด๋ถ ๋ฐ์ดํฐ๋ ํ ๊ฐ์ง ๋ฐ์ดํฐํ์ผ๋ก ํต์ผ
v<-c("hello",3.14) #๋ฌธ์ํ๊ณผ ์ซ์ํ ํผ์ฉ
class(v)
[1] "character" #๋ฌธ์ํ์ผ๋ก ๋ณํ
v
[1] "hello" "3.14"
# c๋ ๋ฐฑํฐ๋ฅผ ์์ฑํด์ฃผ๋ ํจ์์ด๋ค
๋ฆฌ์คํธ(lists) :์๋ก ๋ค๋ฅธ ์ ํ์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ ์๋ ๊ฐ์ฒด
l<-list("hello", 3.14) #๋ฌธ์ํ๊ณผ ์ซ์ํ ํผ์ฉ
class(l)
[1] "list" #๋ฆฌ์คํธํ์ผ๋ก ์ถ๋ ฅ
v
[[1]]
[1] "hello" #๋ฌธ์ํ์ผ๋ก ์ถ๋ ฅ
[[2]]
[1] 3.14 #์ซ์ํ์ผ๋ก ์ถ๋ ฅ
ํ๋ ฌ(matrices): ํ๊ณผ ์ด๋ก ์ด๋ฃจ์ด์ง 2์ฐจ์ ๋ฐ์ดํฐ ์งํฉ
m<-matrix(c(2,3,1,5),nrow=2,ncol=2)
class(m)
[1] "matrix"
m
[,1][,2]
[1,] 2 1
[2,] 3 5
๋ฐฐ์ด(arrays): ๋ค์ฐจ์์ผ๋ก ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ ์งํฉ
- ์ฐจ์์ ์ค์ ์ ๋ฐ๋ฅธ ๋ฐฐ์ด์ ๋ณํ
- 1์ฐจ์์ผ๋ก ์ค์ -> ๋ฐฐ์ด(Arrays)๋ก ์ทจ๊ธ
- 2์ฐจ์์ผ๋ก ์ค์ -> ํ๋ ฌ(Matrix)๋ก ์ทจ๊ธ
- 3์ฐจ์ ์ด์์ผ๋ก ์ค์ -> ๋ฐฐ์ด(Arrays)๋ก ์ทจ๊ธ
ar1<-array(c(2,3,1,5),dim=c(4))
ar2<-array(c(2,3,1,5),dim=c(2,2))
ar3<-array(c(2,3,1,5),dim=c(1,2,2))
class(ar1)
[1] "array"
class(ar2)
[1] "matrix"
class(ar3)
[1] "array"
ar1 #1์ฐจ์
[1] 2 3 1 5
ar2 #2์ฐจ์
[,1][,2]
[1,] 2 1
[2,] 3 5
ar3 #3์ฐจ์
, , 1
[,1][,2]
[1,] 2 3
, , 2
[,1][,2]
[1,] 1 5
์์ธ(factors)
- "๋ฒ์ฃผ"๋ผ๊ณ ๋ ๋ถ๋ฆ
- ๋ฐ์ดํฐ์ ๊ฐ(value)๊ณผ ๋ ๋ฒจ(lavel)์ ํจ๊ป ํํ
- ๊ฐ์ฒด๊ฐ ๊ตฌ์ถ๋๋ฉฐ ๋ฐ์ดํฐ๊ฐ ์๋์ผ๋ก ๋ถ์๋๋ฏ๋ก ํต๊ณ์ ๋ชจ๋ธ๋ง๊ณผ ๋ถ์์ ์ ์ฉ
v<-c("kim","kim","han","lee","lee","kim")
vf<-factor(v)
vf
[1] kim kim han lee lee kim
Levels: han kim lee
class(vf)
[1] "factor"
๋ฐ์ดํฐ ํ๋ ์(data frames)
- ํ์ ํํ๋ก ์ ๋ฆฌ๋ ๋ฐ์ดํฐ ๊ฐ์ฒด์ ์ผ์ข
- ์ด(column)๊ณผ ํ(row)์ ์ด๋ฆ(name)์ ์ง์ ๊ฐ๋ฅ
- ์ด๋ง๋ค ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐํ์ ๊ฐ์ง ์ ์์
- ์ซ์ํ(numeric), ์์ธ(factor), ๋ฌธ์ํ(character)์ธ์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์
- ์ด๋ง๋ค ๊ฐ์ ์์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ์ฌ์ผ ํจ
v<-c("kim","kim","han","lee","lee","kim")
vf<-factor(v)
vf
[1] kim kim han lee lee kim
Levels: han kim lee
class(vf)
[1] "factor"
summary(df)
gender height weight age
femail :2 Min, :159.0 Min. :49 Min. :25.00
mail :1
...
์ฐ์ ์ฐ์ฐ์(Arithmetic Operators)
a<-c(6,7)
b<-c(4,3)
a+b
[1] 10 10 # 6+4 7+3
a-b
[1] 2 4 # 6-4 7-3
...
๊ด๊ณ ์ฐ์ฐ์(Relational Operators)
a<-c(2,3,4)
b<-c(3,3,3)
a>b
[1] FALSE FALSE TRUE #2>3 3>3 4>3
a<b
[1] TRUE FALSE FALSE #2<3 3<3 4<3
...
๋ ผ๋ฆฌ ์ฐ์ฐ์(Logical Operators)
a<-c(TRUE, FALSE, FALSE)
b<-c(TRUE, TRUE, FALSE)
a&b
[1] TRUE FALSE FALSE #TRUE&TRUE FALSE&TRUE FALSE&FALSE
a|b
[1] TRUE TRUE FALSE
a&&b
[1] TRUE #๋ฐฑํฐ์ ์ฒซ๋ฒ์งธ๋ง ๋น๊ต
a||b
[1] TRUE #๋ฐฑํฐ์ ์ฒซ๋ฒ์งธ๋ง ๋น๊ต
๋์ (ํ ๋น)์ฐ์ฐ์(Assignment Operators)
๊ธฐํ ์ฐ์ฐ์(Miscellaneous Operators
3:8
[1] 3 4 5 6 7 8
"pizza"%in%c("pizza","chicken") #๋ฌธ์์ด ํฌํจ ์ฌ๋ถ๋ฅผ ๊ฒ์
[1] TRUE
"icecream"%in%c("pizza","chicken") #๋ฌธ์์ด ํฌํจ ์ฌ๋ถ๋ฅผ ๊ฒ์
[1] FALSE
a<-matrix(c(1,2,3,4),nrow=2,n=col=2) #ํ๋ ฌ a์์ฑ
b<-matrix(c(4,3,2,1),nrow=2,n=col=2) #ํ๋ ฌ b์์ฑ
a*b
[,1][,2]
[1,] 4 6
[2,] 6 4
a%*%b
[,1][,2]
[1,] 13 5
[2,] 20 8
'๐ป IT > ๋น ๋ฐ์ดํฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐ์ดํฐ ํต๊ณ ๋ถ์(1) (1) | 2024.04.23 |
---|---|
๋น ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ R (3) (1) | 2024.04.20 |
๋น ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ R (1) (0) | 2024.04.19 |
๋น ๋ฐ์ดํฐ ์ ์ฅ์ (1) | 2024.04.18 |
๋น ๋ฐ์ดํฐ์ ์์ง (0) | 2024.04.17 |
[๋งฅ] ํ์ธ๋์ง ์์ ๊ฐ๋ฐ์๊ฐ ๋ฐฐํฌํ๊ธฐ ๋๋ฌธ์ ์ด ์ ์์ต๋๋ค. ์ด๊ธฐ
๋กฌ๋ถ์ ๋ค์ด ๋ฐ๊ณ ํ์ผ์ ์ด๋ ค๊ณ ํ๋๊น
๋งฅ๋ถ์ด ๊ฑฐ์ ํ๋ค.
์์คํ ์ค์ - ๊ฐ์ธ์ ๋ณด ๋ณดํธ ๋ฐ ๋ณด์์ ๋ค์ด๊ฐ์ ์คํฌ๋กค์ ์ข ๋ด๋ฆฌ๋ฉด ๋ณด์ธ๋ค.
๊ทธ๋๋ ์ด๊ธฐ ํด๋ฆญ
์ด๊ธฐ ํด๋ฆญ
ํ๋ฒ ๋ ๋ฌธ๊ตฌ ๋จ๋ฉด ํ์ธ ํ๋ฉด
์ ๋น๋๋ค
'๐ป IT > ์์ ์ง์๋ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring boot ๊ธฐ์ด ๋ฐ ์ค์ (0) | 2024.04.21 |
---|---|
[๋งฅ] ๋ถ๋ช jdk๋ฅผ ์ง์ ๋๋ฐ java -version ๋ช ๋ น์ด ์น๋ฉด ๋ฐ ๋ (0) | 2024.04.19 |
[์ดํด๋ฆฝ์ค] ์ด๋ฆ ํ๋ฒ์ ๋ฐ๊พธ๊ธฐ (0) | 2024.03.12 |
[์ดํด๋ฆฝ์ค] new server์์ ํฐ์บฃ์ด ์๋ฐ๋ (0) | 2024.03.05 |
๋งฅ node.js 1๋ถ ์ค์น (0) | 2024.02.05 |
[๋งฅ] ๋ถ๋ช jdk๋ฅผ ์ง์ ๋๋ฐ java -version ๋ช ๋ น์ด ์น๋ฉด ๋ฐ ๋
jdk๋ฅผ ๋ค ์ง์ฐ๊ณ ์๋ก ๊น๊ณ ์ถ์ด์
/Library/Java/JavaVirtualMachines/ ์ ๋ค์ด๊ฐ์ ์ง์ ๋ค.
์ญ์ ๋ช ๋ น์ด
sudo rm -rf openjdk-8.jdk
์ง์ด ํ java -version๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋๋ฐ
์ด๋ผ?
๋ฌ๋ค..
๊ฒฝ๋ก๋ก ์ง์ ๋ค์ด๊ฐ์ ํ์ธํด๋ดค๋๋ฐ
์์ฃผ ํ ~ ์ฅ ๊ฐ์ด ๋น์ด์๋ค.
๊ทผ๋ฐ ์ ๋จ์ง?
ํ ๋๋ ํฐ๋ฆฌ๋ก ์ด๋
MacBookPro ~ % cd ~
์๋์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ค๋ค
MacBookPro ~ % sudo R CMD javareconf
๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ผ๊ณ ๋จ๋๋ฐ ์ ๋ ฅํ๋ฉด ์ด๋ ๊ฒ ๋ฐ ๊ฒ์ด๋ค.
๋นจ๊ฐ ๋ฐ์ค๋ฅผ ๋ณด๋ฉด ์ ์์น์ jdk๊ฐ ๋จ์์์๋ค.
์ ์์ง์์ง์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ ์์น๋ก ๋ค์ด๊ฐ์ ํด๋๋ฅผ ์ง์์คฌ๋ค.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด
์ด์ ์ผ ์๋ค๋ ๋ฉํธ๊ฐ ๋์จ๋ค
ํด๊ฒฐ์๋ฃ!
'๐ป IT > ์์ ์ง์๋ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring boot ๊ธฐ์ด ๋ฐ ์ค์ (0) | 2024.04.21 |
---|---|
[๋งฅ] ํ์ธ๋์ง ์์ ๊ฐ๋ฐ์๊ฐ ๋ฐฐํฌํ๊ธฐ ๋๋ฌธ์ ์ด ์ ์์ต๋๋ค. ์ด๊ธฐ (0) | 2024.04.19 |
[์ดํด๋ฆฝ์ค] ์ด๋ฆ ํ๋ฒ์ ๋ฐ๊พธ๊ธฐ (0) | 2024.03.12 |
[์ดํด๋ฆฝ์ค] new server์์ ํฐ์บฃ์ด ์๋ฐ๋ (0) | 2024.03.05 |
๋งฅ node.js 1๋ถ ์ค์น (0) | 2024.02.05 |
๋น ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ R (1)
R์ด๋? : ํต๊ณ ๋ถ์, ๊ทธ๋ํฝ ํํ, ๋ณด๊ณ ์์ฑ์ ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ฐ ์ํํธ์จ์ด ํ๊ฒฝ
- ํต๊ณ ๋ถ์ - ์ ํ ๋ฐ ๋น์ ํ ๋ชจ๋ธ๋ง, ํต๊ณ ๊ฒ์ , ์๊ณ์ด ๋ถ์, ๋ถ๋ฅ, ๊ตฐ์งํ ๋ฑ์ ๊ธฐ๋ฅ
- ๊ทธ๋ํฝ ํํ ๋ฐ ๋ณด๊ณ ์์ฑ - ๋ง๋ํ ๊ทธ๋ํ, ์ํ ๊ทธ๋ํ, 3์ฐจ์ ๊ทธ๋ํ ๋ฑ ์ถ๋ ฅ
- GNU GPL Version 2 ๋ผ์ด์ ์ค์ ์ํ์ฌ ๊ด๋ฆฌ
- Windows, Linux, Mac ๋ฑ ๋ค์ํ ์ด์์ฒด์ ํ๊ฒฝ ์ง์
ํน์ง
- ํจ๊ณผ์ ์ธ ๋ฐ์ดํฐ ํธ๋ค๋ง ๋ฐ ์ ์ฅ์ ๊ธฐ๋ฅ
- ์ ํ๋์ ์ฐ์ฐ์ ์ ํฉํ ์ฐ์ฐ์ ์ ๊ณต
- ์ผ๊ด์ฑ ์์ผ๋ฉฐ ํตํฉ๋ ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ
- ๋ฐ์ดํฐ ๋ถ์์ ๊ทธ๋ํฝ ๋ฐ ์ถ๋ ฅ ๊ธฐ๋ฅ
- ๊ฒฌ๊ณ ํ๋ฉด์๋ ๊ฐ๊ฒฐํ๊ณ ํจ๊ณผ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด (์กฐ๊ฑด๋ฌธ, ๋ฃจํ, ์ฌ์ฉ์ ์ ์ ์ฌ๊ท ํจ์, ์ ์ถ๋ ฅ ๊ธฐ๋ฅ ๋ฑ)
์ค์น (R๋จผ์ ๊น๊ณ RStudio๊น์์ผ์ง ์คํ ๋ฉ๋๋ค)
R
The Comprehensive R Archive Network
cran.r-project.org
RStudio
https://posit.co/download/rstudio-desktop/
Posit
The best data science is open source. Posit is committed to creating incredible open-source tools for individuals, teams, and enterprises.
posit.co
RStudio ์คํ ์ ํ๋ฉด
๊ธฐ๋ณธ ๋ฌธ๋ฒ
๋์ (ํ ๋น) ์ฐ์ฐ์์ ์ฌ์ฉ
- <- ์ฐ์ฐ์ ๋๋ -> ์ฐ์ฐ์๋ฅผ ์ด์ฉํ์ฌ ๋ณ์์ ๊ฐ์ ๋์
a<-3
# ๋ณ์ a์ 3์ ๋์
a+3->b
# ๋ณ์ b์ a+3์ ๊ฒฐ๊ณผ๋ฅผ ๋์
1<-list("pizza",3,119.2)
# ๋ณ์l์ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ์ฌ ๋์
์ฃผ์
- ์ฃผ์(comments): ์ค์ ๋ก ์คํ๋์ง ์๋ ์ฝ๋์ ๋ฉ๋ชจ
- # ๊ธฐํธ๋ฅผ ์ด์ฉํ์ฌ ์ฃผ์ ์ ์ ๊ฐ๋ฅ
# ์ ๋ ์คํ๋์ง ์์ต๋๋ค
๋ณ์(Variables)
- ๋ชจ๋ ๋ณ์๋ ๋ฌธ์, ์ซ์, ์ (.), ๋ฐ์ค ๋ฌธ์(_)๋ง ์ฌ์ฉ ๊ฐ๋ฅ
- ์ฒซ๋ฒ์งธ ๋ฌธ์๋ ์ซ์์ ๋ฐ์ค ๋ฌธ์(_)๋ก ์์ํ ์ ์๋ค.
- ์ฒซ๋ฒ์งธ ๋ฌธ์๊ฐ ์ (.)์ธ ๊ฒฝ์ฐ -> ๋๋ฒ์งธ ๋ฌธ์๋ ์ซ์ ์ธ ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
test2. #์ฌ์ฉ ๊ฐ๋ฅ
test% #์ฌ์ฉ ๋ถ๊ฐ๋ฅ
2test #์ฌ์ฉ ๋ถ๊ฐ๋ฅ
.test #์ฌ์ฉ ๊ฐ๋ฅ
.2test #์ฌ์ฉ ๋ถ๊ฐ๋ฅ
_test #์ฌ์ฉ ๋ถ๊ฐ๋ฅ
๋ณ์ ๊ด๋ จ ํจ์
- class() : ๋ณ์์ ๋ฐ์ดํฐํ์ ์์๋ด๊ธฐ ์ํ ํจ์
class(a)
[1] "character"
# ๋ณ์ a์ ๋ฐ์ดํฐํ์ ์์๋ด๊ธฐ ์ํจ
- ls() : ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ ๋ณ์์ ๋ชฉ๋ก ์ถ๋ ฅ
ls()
[1] "a" "b" "c"
# ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ ๋ณ์์ ๋ชฉ๋ก
ls(pattern="c")
[1] "c"
# ํน์ ๋ณ์ ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ์ถ๋ ฅ
- rm() : ๋ณ์๋ฅผ ์ง์ฐ๋ ํจ์
rm("a")
ls()
[1] "b" "c"
# a ๋ณ์๋ฅผ ์ญ์
# ์ฌ์ฉํ๊ณ ์์ง ์์ ๋ณ์ ์
๋ ฅ์ Warning message ์ถ๋ ฅ
'๐ป IT > ๋น ๋ฐ์ดํฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋น ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ R (3) (1) | 2024.04.20 |
---|---|
๋น ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ R (2) (1) | 2024.04.20 |
๋น ๋ฐ์ดํฐ ์ ์ฅ์ (1) | 2024.04.18 |
๋น ๋ฐ์ดํฐ์ ์์ง (0) | 2024.04.17 |
๋น ๋ฐ์ดํฐ์ ๊ฐ๋ (0) | 2024.04.17 |
๋น ๋ฐ์ดํฐ ์ ์ฅ์
cap ์ด๋ก
โ ์ผ๊ด์ฑ(Consistency) : ๋ชจ๋ ๋ ธ๋๋ ๋์ผ ์์ ์ ๋์ผ ๋ฐ์ดํฐ ์ถ๋ ฅ์ด ๋ณด์ฅ
โ ๊ฐ์ฉ์ฑ(Availability) : ๋ ธ๊ทธ๊ฐ ์ด์ฉ ๋ถ๊ฐ๋ฅํด๋ ๋ค๋ฅธ ๋ ธ๋ ์ ์ ์๋ ๋ณด์ฅ
โ ์ง์์ฑ(Parttition Tolerance) : ๋ฐ์ดํฐ ์์ค์ด ๋ฐ์ํด๋ ์์คํ ์ ์ ์๋ ๋ณด์ฅ (RDBMS๋ ์ง์์ฑ์ ํ๊ณ๊ฐ ์๋ค.)
โ ๋ ธ๋๋? : ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ๋ถ์์ ์ํ ์ปดํจํ ์์์ ์ ๊ณตํ๋ ์ปดํจํ ์ฅ๋น์ ๋๋ค.
RDBMS์ ๋์
โ ํ๋ก(Hadoop) : ํ๋ก ๋ถ์ฐํ์ผ ์์คํ (HDFS) , ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ฉ์ดํ๋ค
โ NoSQL : ๋น๊ด๊ณํ ๋ฐ์ดํฐ ์ ์ฅ์ , ๋ฐ์ดํฐ์ ์์ค์ ๋์ฒ ๊ฐ๋ฅํ๋ค
โ ๋ ๋์ค(Redis) : NoSQL์ ์ผ์ข ์ด๋ฉฐ key-value ๊ตฌ์กฐ ์ ์ฅ์, ์ธ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ์ ๊ตฌ์กฐ
โ ์ฐ์ง(Oozie) : ์๋ฐ ์๋ธ๋ฆฟ ์ปจํ ์ด๋ ๊ธฐ๋ฐ ์์ ์์ง, DAG ํํ ๊ธฐ๋ฐ ์์ (job)์ ์ด
ํ๋ก ๋ถ์ฐ ํ์ผ ์์คํ (HDFS)
๊ตฌ์ฑ์์
โ ๋ค์๋ ธ๋ ์๋ฒ : ํ์ผ์ ์์น(iNode), ๋ฉํ์ ๋ณด ๊ด๋ฆฌ, ํด๋ผ์ด์ธํธ ์์ฒญ
โ ๋ณด์กฐ ๋ค์๋ ธ๋ ์๋ฒ : ๋ค์๋ ธ๋ ์๋ฒ์ ๋ฐฑ์ ์ญํ , ํ์ผ ์์คํ ๋ณต๊ตฌ
โ ๋ฐ์ดํฐ ๋ ธ๋ ์๋ฒ : ๊ณ ์ ๋ ํฌ๊ธฐ์ ๋ธ๋ก ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋๋์ด ์ ์ฅ
NoSQL(Not-Only-SQL)
๋ฐ์ดํฐ ๋ชจ๋ธ๋ณ ๋ถ๋ฅ
โ ํค๋ฐธ๋ฅ(Keyvalue) : ํน์ ๊ฐ์ ๊ณ ์ ํค์ ๋์ํ์ฌ ์คํค๋ง ์์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ ํ
โ ์์ฐจ์ ํค๋ฐธ๋ฅ(Ordered KeyValue) : ํค๋ฐธ๋ฅ ์์ ์์ฐจ์ ์ผ๋ก ์ ์ฅ, ์ฐ์์ฑ์ ๋ถ์ฌํจ์ผ๋ก์จ ์์ญ ์ค์บ ํจ์จ์ ๋์ฌ์ค
โ ๋น ํ ์ด๋ธ(BigTable) : ํ ์ด๋ธ ํ์(Tabular), 2~3๋จ๊ณ๊น์ง ์ฌ๊ท์ ๊ตฌ์กฐ (ํ ์ด๋ธ์ ๋ด๋ถ์ ๋ฐ์ดํฐ๊ฐ ์๊ธฐ ์์ ์ ์ด๋ ํ ๋ถ๋ถ์ ๊ฐ๋ฆฌํค๋ ๊ฒ)ํ์ฑ ๊ฐ๋ฅ
โ ๋ํ๋จผํธ(Document): ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค(ODBMS)์ ํ์ํ, ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊น์ด์ ์ ํ ์์
โ ๊ทธ๋ํ(Graph): ๊ฐ๋ณ์ ์ธ ๋ฐ์ดํฐ ๋ ธ๋ ๊ฐ ์ฐ๊ฒฐ ๊ตฌ์กฐ, ์ ์ฝ์๋ ๊ด๊ณ ํ์ฑ ๊ฐ๋ฅ
์์คํ ๊ตฌ์ฑ
โค ๋ง์คํฐ-์ฌ๋ ์ด๋ธ(Master-Slave)
- ๋ง์คํฐ ๋ ธ๋๊ฐ ์ฌ๋ ์ด๋ธ/๋ฐ์ดํฐ์ ๋ฉํ ์ ๋ณด ๊ด๋ฆฌ
- ์๋ฒ์ถ๊ฐ/์ญ์ ์์ ์ ์ฉ์ด
- ๋ง์คํฐ์ ๋ถํ ์ฆ๊ฐ
โค ๋ผ์ด๋ ํ ์ด๋ธ(Round Table)
- ํด์ํ ์ด๋ธ(HashTable)๊ธฐ๋ฐ ๊ตฌ์กฐ
- ๋ง์คํฐ ๋ ธ๋ ์์ -> ํธ๋ํฝ ๋ถ์ฐ ์ฉ์ด
- ๋ฉค๋ฒ ๋ ธ๋ ์ถ๊ฐ/์ญ์ ์ ๋ฐ์ดํฐ ์ด๋ -> ํธ๋ํฝ ์ฆ๊ฐ
ํ๋ก ๋ช ๋ น์ด
ls : ํ์ผ(ํด๋) ์กฐํ -> ํ์ผ(ํด๋๋ฅผ) ์กฐํํ๋ ๋ช ๋ น์ด
hadoop fs -ls /
# hadoop fs -๋ hadoop์ผ๋ก ๊ฒ์ํ๊ฒ ๋ค
# ls / ๋ '/'๋ผ๋ ๊ณณ์ ์๋ ํ์ผ์ ์กฐํํ๊ฒ ๋ค
put : ํ์ผ ์ฌ๋ฆฌ๊ธฐ -> ๋ก์ปฌ ํ์ผ์ HDFS์ ์ ์ฅํ๋ ๋ช ๋ น์ด
hadoop fs -put hello.txt h_hello.txt
# hello.txt : ๋ด ์ปดํจํฐ์ ์๋ ํ์ผ๋ช
# h_hello.txt : ํ๋ก์ ์ ์ฅํ ํ์ผ๋ช
get : ํ์ผ ๊ฐ์ ธ์ค๊ธฐ -> HDFS์ ํ์ผ์ ๋ก์ปฌ๋ก ๊ฐ์ ธ์ค๋ ๋ช ๋ น์ด
hadoop fs -get h_bye.txt bye.txt
# h_bye.txt : ํ๋ก์ ์ ์ฅํ ํ์ผ๋ช
# bye.txt : ๋ด ์ปดํจํฐ์ ์๋ ํ์ผ๋ช
cp : ํ์ผ ๋ณต์ฌํ๊ธฐ -> HDFS์ ํ์ผ์ HDFS์์์ ๋ณต์ฌ
hadoop fs -cp test1.txt test2.txt
rm : ํ์ผ ์ญ์ ํ๊ธฐ -> HDFS์ ํ์ผ์ ์ญ์ ํ๊ธฐ
hadoop fs -rm test2.txt
chmod : ๊ถํ ๋ณ๊ฒฝ -> HDFS์์ ํ์ผ์ ๊ถํ์ ๋ณ๊ฒฝ
hadoop fs -chmod 700 test.txt
chown : ์์ ๊ถ ๋ณ๊ฒฝ -> HDFS์์ ํ์ผ์ ์์ ๊ถ์ ๋ณ๊ฒฝ
hadoop fs -chown recorder test.txt
# recorder : ์์ ์
MongoDB(๋ชฝ๊ณ DB)
ํน์ง
โค ๋ฌธ์ ์งํฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ฌธ์(document)์ ๋ฐฐ์ด(array)์ ๊ฐ๋ ๋์
- ๋ณต์กํ ๊ณ์ธต ๊ด๊ณ๋ฅผ ํ๋์ ๋ ์ฝ๋๋ก ํํ ๊ฐ๋ฅ
- NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค
โค ๋๋ธ ๋งํฌ๋ ๋ฆฌ์คํฌ ๊ตฌ์กฐ : ๋ฐ์ดํฐ์ ์๋ฐฉํฅ-์ญ๋ฐฉํฅ ํ์ ๊ฐ๋ฅ
์ฃผ์ ๊ฐ๋
๋ฐ์ดํฐ๋ฒ ์ด์ค(Database) : ์ปฌ๋ ์ ์ ๋ ผ๋ฆฌ์ /๋ฌผ๋ฆฌ์ ์ธ ์งํฉ
์ปฌ๋ ์ (Collection) : ๊ตฌ์กฐ์ /๊ฐ๋ ์ ์ผ๋ก ์ ์ฌํ ๋ํ๋จผํธ์ ์งํฉ
์ต์คํ ํธ(Extent) : ๋ฐ์ดํฐ ์ ์ฅ์ ์ํ ๋ ผ๋ฆฌ ๋จ์
๋ํ๋จผํธ(Document) : ์ ๋ ฌ๋ ํค(Key)-๊ฐ(Value)์ ์งํฉ
๋ชฝ๊ณ DB๋ช ๋ น์ด
use : ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑ(์ฌ์ฉ)ํ๋ ๋ช ๋ น
use mydatabase
# mydatabase๋ผ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๋ค.
# ์ด๋ฏธ ์๋ค๋ฉด ์ฌ์ฉํ๋ค.
dropDatabase() : ํ์ฌ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์
db.dropDatabase()
# ์ฌ์ฉ์ค์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํ๋ค.
createCollection() : ์ปฌ๋ ์ ์ ์์ฑ(์ฌ์ฉ)ํ๋ ๋ช ๋ น
db.createCollection("test")
{"ok" : 1 } --> ์์ฑ ํ ๋์ค๋ ๋ฉ์ธ์ง
# test :์์ฑํ๊ณ ์ ํ๋ ์ปฌ๋ ์
drop() : ์ปฌ๋ ์ ์ ์ญ์ ํ๋ ๋ช ๋ น
db.test.drop()
# test ์ปฌ๋ ์
์ ์ญ์ ํ๋ค
insert() : ๋ํ๋จผํธ๋ฅผ ์ถ๊ฐํ๋ ๋ช ๋ น
db.test.insert(
{"title":"hello", "author":"recorder"}
{"title":"bye", "author":"bboong"}
# ์ฑ๊ณต์ ์ผ๋ก ์ฝ์
์
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
...
remove() : ๋ํ๋จผํธ๋ฅผ ์ ๊ฑฐํ๋ ๋ช ๋ น
db.test.remove({"title": "hello"})
# ์คํ ์ฑ๊ณต์ ์ถ๋ ฅ
{"_id" ObjectId("..."),
"title" : "hello", "author" : "recorder"}
'๐ป IT > ๋น ๋ฐ์ดํฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋น ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ R (3) (1) | 2024.04.20 |
---|---|
๋น ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ R (2) (1) | 2024.04.20 |
๋น ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ R (1) (0) | 2024.04.19 |
๋น ๋ฐ์ดํฐ์ ์์ง (0) | 2024.04.17 |
๋น ๋ฐ์ดํฐ์ ๊ฐ๋ (0) | 2024.04.17 |