63. R Start
R ์ฝ๋ ์กฐ๊ฐ ๋ชจ์
์์ฑ์ผ
4/25/2025์์ฑ
ํํ์์ ์ผ
4/25/2025R ์ฝ๋ ์กฐ๊ฐ
์ฝ๋
############################## ๋ฐฑํฐ ์ผ๋ฐ ##############################
# ๋ฐฑํฐ ์์ฑ : ๋์ผํ ํ๋์ ์ ํ์ผ๋ก ๊ตฌ์ฑ
number <- c(1:10)
number
string <- c("we", "love", "data", "analytics")
boolean <- c(TRUE, FALSE, TRUE, TRUE)
odd <- c(1, 3, 5)
even <- c(2, 4, 6)
c(odd, even) # ๊ฒฐํฉ๋
# 3:9 == (3,4,5,6,7,8,9)
# 9:3 => 9 ๋ถํฐ 1์ฉ ๊ฐ์ํ๋ ์์ด
# 5:-3 => 5 4 3 2 1 0 -1 -2 -3
d2 <- c(5:-3)
d2
? seq()
seq(from = 3, to = 9) # 3 4 5 6 7 8 9
seq(from = 3, to = 9, by = 2) # 3๋ถํฐ 9๊น์ง 2์ฉ ์ฆ๊ฐํ๋ ์์ด -> 3 5 7 9
seq(from = 3.5, to = 1.5, by = -0.5) # 3.5 3.0 2.5 2.0 1.5
seq(from = 0,
to = 100,
length.out = 5) # 0 25 50 75 100, 0๋ถํฐ 10๊น์ง 5๊ฐ ์์๋ฅผ ๋ง๋ค์ด์ค
seq(from = -1,
to = 1,
length.out = 5)
# ๋ฐ๋ณต
? rep()
rep(1, times = 3)
rep(c(1, 2, 3), times = 3) # 1 2 3 1 2 3 1 2 3
rep(c(1, 2, 3), each = 3) # 1 1 1 2 2 2 3 3 3
rep(c(1, 2, 3), times = c(1, 2, 3)) #1 2 2 3 3 3
rep(c(1, 2, 3), length.out = 8) # 1 2 3 1 2 3 1 2
# ์ซ์๋ฐฑํฐ์ ๋ฌธ์๋ฐฑํฐ ํผํฉํ์ผ ๋์๋ ์ซ์๋ฅผ ๋ฌธ์ํ์ผ๋ก ํ๋ณํ
num <- c(1, 2, 3)
cha <- c("X", "Y", "Z")
c(num, cha) # "1" "2" "3" "X" "Y" "Z"
# ๋ฐฑํฐ์ ๊ตฌ์กฐ ํ์
: ํ์ [์ฐจ์:์ธ๋ฑ์ค] ์์์ ๊ณ ์ ์์น
str(num) # num [1:3] 1 2 3
str(cha) # chr [1:3] "X" "Y" "Z"
# ๋ฐฑํฐ์ ๊ธธ์ด : ์์์ ๊ฐฏ์
length(num) # 3
# ๋ฏธ๋ฆฌ ์ ์๋ ์์
LETTERS # "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
letters # "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
month.name # "January" "February" "March" "April" "May" "June" "July" "August" "September" "October" "November" "December"
month.abb # "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"
pi # 3.141593
# ํด๋น ์๋ง ๊ฐ์ ธ์ค๊ธฐ
month <- c(12, 9, 3, 5, 1)
month
month.name[month] # "December" "September" "March" "May" "January"
############################## ๋ฐฑํฐ์ฐ์ฐ ##############################
# ๊ฐ์ ๊ธธ์ด : ์์ ๋ ์์๋ฅผ ์ฐ์ฐํ๋ ํน์ง (๊ฐ์ ๊ธธ์ด์ ์์)
"+"(1, 2) #-> 3
c(1, 2, 3) + c(4, 5, 6) #-> 5 7 9
c(1, 2, 3) * c(4, 5, 6) #-> 4 10 18
c(10, 20, 30) / c(2, 4, 6) #-> 5 5 5
c(10, 20, 30) %% c(3, 5, 7) # ๋๋ ํ ๋๋จธ์ง๋ฅผ ์ทจํจ -> 1 0 2
c(10, 20, 30) %/% c(3, 5, 7) # ๋๋ ํ ๋ชซ์ ์ทจํจ -> 3 4 4
# ๋ค๋ฅธ ๊ธธ์ด : ์ฌ์ฌ์ฉ ๊ท์น์ ์ฌ์ฉํจ, ๊ธธ์ด๊ฐ ์งง์ ์ชฝ์ ๊ธด์ชฝ์ ๋ง์ถค
c(1, 2, 3) + c(4, 5, 6, 7, 8, 9) #-> 5 7 9 8 10 12
c(1, 3, 5) + 10 #-> 11 13 15
c(1, 2, 3) + c(4, 5, 6, 7, 8) # ์์์ ์ฐจ์ด๊ฐ ๋ฐฐ์๊ฐ ์๋๋๋ ๊ณ์ฐ์ ํ๋ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํจ
# ๋
ผ๋ฆฌ ์ฐ์ฐ์ ( ==, !=, <, >, <=, >=, !x, x | y, x & y, isTRUE() ), TRUE == 1, FASLE == 0
v <- pi
w <- 10 / 3
v == w
v != w
v > w
v < w
! (v > w)
(v == w) | (v < w)
(v == w) & (v < w)
isTRUE(v == w)
y <- c(0, 25, 50, 75, 100)
z <- c(50, 50, 50, 50, 50)
y == z #-> FALSE FALSE TRUE FALSE FALSE
y != z #-> TRUE TRUE FALSE TRUE TRUE
y > z #-> FALSE FALSE FALSE TRUE TRUE
y < z #-> TRUE TRUE FALSE FALSE FALSE
y == 50 #-> y == z ์ ๊ฐ์ ๊ฒฐ๊ณผ
as.numeric(TRUE) # ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ธ์๋ฅผ ์ซ์๋ก ๋ณํ -> 1
as.numeric(FALSE) #-> 0
TRUE * TRUE #-> 1
TRUE + TRUE #-> 2
sum(y > 50) # ์กฐ๊ฑด์ ๋ง๋ ๊ฒ์ ๊ฐฏ์ ๊ตฌํ๊ธฐ ์์ฉ -> 2
any(-3:3 > 0) # ํด๋น ์์๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด TRUE ๋ฅผ ๋ฐํ -> TRUE
all(-3:3 > 0) # ๋ชจ๋ ์์๊ฐ ์กฐ๊ฑด์ ๋ง์ ๋ TRUE ๋ฅผ ๋ฐํ -> FALSE
sqrt(2) ^ 2 #-> 2, ๊ทธ๋ฌ๋ ์๋์ ์ฐ์ฐ์ ์ฃผ์ํด์ผ ํจ(๋ถ๋์์์ ์๋ก ์ฒ๋ฆฌํ๋ ์ค์ฐจ ๋๋ฌธ์ ๋ฐ์ํจ)
sqrt(2) ^ 2 == 2 #-> FALSE
sqrt(2) ^ 2 - 2 #-> 4.440892e-16
identical(sqrt(2) ^ 2, 2) # ๋ค๋ฅด๋ค๋ ์๋ฏธ -> FALSE, ๋์์ผ๋ก๋...
all.equal(sqrt(2) ^ 2, 2) # ๋งค์ฐ ์์ ๊ฐ์ ๋ฌด์ํจ์ผ๋ก -> TRUE, ์ด๋ ์๋์ ๊ฐ์ด ๋ช
๋ฐฑํ ๋ค๋ฅธ ๊ฒฝ์ฐ๋ isTRUE ํจ์ ์ฌ์ฉ์ ๊ถ์ฅ
isTRUE(all.equal(sqrt(2) ^ 2, 3)) #
fruit <- c("Apple", "Banana", "Strawberry")
food <- c("Pie", "Juice", "Cake")
paste(fruit, food) # ๋ฌธ์์ด ํฉ์น๊ธฐ ํจ์ -> "Apple Pie" "Banana Juice" "Strawberry Cake"
paste(fruit, "Juice") # "Apple Juice" "Banana Juice" "Strawberry Juice" : ์ฌ์ฌ์ฉ ๊ท์น ์ ์ฉ๋จ
############################## ๋ฐฑํฐ ํจ์ ##############################
# ์ ๋๊ฐ
abs(-3:3)
log(1:5)
log(1:5, base = exp(1)) # ๋ฐ์ ์ง์
log10(1:5)
log2(1:5)
exp(1:5) # ์์ฐ์์๋ฅผ ๋ฐ์๋กํ ๋ก๊ทธ
y <- exp(1:5)
log(y)
factorial(1:5) #-> 1 2 6 24 120
choose(5, 2) # ๊ฒฝ์ฐ์ ์ (์ปด๋น๋ค์ด์
) #->10
sqrt(1:5) # ์ ๊ณฑ๊ทผ
options("digits") # ํ์ฌ ์ ํจ์๋ฆฟ์ ํ์ธํ๊ธฐ
pi #-> 3.141593
signif(456.789, digits = 2) # ์ ํจ์๋ฆฟ์ ์ง์ -> 460
signif(456.789, digits = 4) #-> 456.8
round(456.789, digits = 2) # ๋ฐ์ฌ๋ฆผ -> 456.79, ์ง์ ํ์ง ์์ผ๋ฉด ์ ์๋ก ์ถ๋ ฅ
round(456.789) #-> 457
round(sqrt(1:5), digits = 2)
round(456.789, digits = -2) #-> 500, ์ ์๋ก์ ์๋ฆฟ์๋ ์์ 10^2
round(11.5) #-> 12, 5์ผ ๊ฒฝ์ฐ์๋ ๊ฐ์ฅ ๊ฐ๊น์ด ์ง์๋ก ๋ฐ์ฌ๋ฆผํจ์ผ๋ก ํ์๋ ๋ฐ์ฌ๋ฆผํ๋ ์๋์ ๊ฐ์ด...
round(12.5) #-> 12, ์ง์์์ ํ์๋ก๋ ๋ฐ์ฌ๋ฆผ ํ์ง ์์
round(13.5) #-> 14
round(-3.5) #-> -4
round(-4.5) #-> -4 ์์๋ ๋ง์ฐฌ๊ฐ์ง๋ก 5์ผ๋๋ ์ง์์์ ํ์๋ก๋ ๋ฐ์ฌ๋ฆผ ํ์ง ์์
floor(456.78) #->456, ๊ฐ๊น์ด ์์ ์ ์๋ก ๋ด๋ฆผ
floor(-456.78) #-> -457
ceiling(456.34) #-> 457, ๊ฐ๊น์ด ํฐ ์ ์๋ก ์ฌ๋ฆผ
ceiling(-456.78) #-> 456
trunc(456.78) #-> 456, 0์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์๋ก ๋ฐ์ฌ๋ฆผ
trunc(-456.78)#-> -456
# ๊ฒฐ์ธก๊ฐ ์ฒ๋ฆฌ
# 0์ ๋๋๋ : Inf(์์ ๋ฌดํ๋ฐ), -Inf(์์ ๋ฌดํ๋), NaN
3 / 0 #-> Inf
5 - Inf #-> Inf
Inf * Inf #-> Inf
Inf * (-Inf) #-> -Inf
Inf / Inf # NaN, Not a Number ๊ณ์ฐ๊ฒฐ๊ณผ๋ฅผ ์ ์ ํ ์ ์์
Inf * 0 #-> NaN
log(-2) #-> Nan
NaN + 3 #-> NaN
is.nan(NaN + 3) #-> TRUE, NaN ํ
์คํธ ํจ์, ์ฒดํฌํ๊ธฐ
is.infinite(10 ^ (305:310)) # ๋ฌดํ๋ ์ผ ๊ฒฝ์ฐ = TRUE, ๋ฌดํ๋์ ์ ๋ก ์ธ์ํ๋ ์ => 1.8 * 10.^308
# NA (Not Abailable) : ๊ฒฐ์ธก๊ฐ
k <- NA
k + 5
is.na(k) #-> TRUE
is.na(k + 5) #-> TRUE
is.na(NaN) #-> TRUE
z <- 1:5
sum(z)
max(z)
min(z)
mean(z) # ํ๊ท
range(z) # ์ต๋๊ฐ ์ต์๊ฐ
prod(z) #-> 120, ๋ฐฑํฐ ์์๋ค ๋ชจ๋ ๊ณฑ์ ๋ฐํ, Product of Vector
var(z) # ๋ถ์ฐ
sd(z) # ํ์คํธ์ฐจ
# ๊ฒฐ์ธก๊ฐ์ด ์๋ ๋ฐฑํฐ
w <- c(10, 20, 30, 40, 50, NA)
mean(w)
mean(w, na.rm = TRUE) #-> 30, NA ๋นผ๊ณ
sum(w) #-> NA
sum(w, na.rm = TRUE) #-> 150, NA ์ ๋บ
sum(na.omit(w)) #-> 150, ์์ ๋์ผ
# ๋ชจ๋ ๊ฒฐ์ธก๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฐฑํฐ : ์ฝ์๋ ๊ฐ์ผ๋ก ์ถ๋ ฅ
v <- c(NA, NA, NA, NA, NA)
sum(v, na.rm = TRUE) #-> 0, ๋ชจ๋ ๊ฒฐ์ธก๊ฐ์ธ๋ฐ 0์ด ๋์ด์ผ๋ก ๋ฌธ์ ๊ฐ ๋จ
prod(v, na.rm = TRUE) #-> 1, ์์ ๋์ผํ ๋ฌธ์ ์ ๋ฐ์
max(v, na.rm = TRUE) #-> -Inf warning, ์์ ๋์ผํ ๋ฌธ์ ๋ฐ์
# ๋์ ํฉ์ด๋ ๊ณฑ
trafic.death <- c(842, 729, 786, 751, 844, 851, 702) # ์์ผ๋ณ ๊ตํต์ฌ๊ณ ์ฌ๋ง์ ์
cumsum(trafic.death) # ๋์ ํฉ๊ณ -> 842 1571 2357 3108 3952 4803 5505
cumprod(trafic.death)
cummax(trafic.death) # ํด๋น ์์น๊น์ง ์ต๋๊ฐ -> 842 842 842 842 844 851 851
cummin(trafic.death) # ํด๋น ์์น๊น์ง ์ต์๊ฐ -> 842 729 729 729 729 729 702
cumsum(c(3, 5, 1, NA, 2)) # ๊ฒฐ์ธก๊ฐ ๊น์ง๋ง ๊ณ์ฐ -> 3 8 9 NA NA
diff(trafic.death) # ์ธ์ ํ ๊ฐ๊ณผ ์ฐจ์ด (๋ค - ์) -> -113 57 -35 93 7 -149
diff(c(3, 5, 1, NA, 2, 5)) # ๊ฒฐ์ธก๊ฐ ๋ถ๋ถ์ ์ถ๋ ฅ ์๋จ
diff(1:5, lag = 2) # lag ๋งํผ ๋จ์ด์ง ๋ถ๋ถ๊ณผ์ ์ฐจ์ด -> 2 2 2
# ์งํฉ ํจ์
p <- 1:10
q <- 6:15
union(p,q) # ํฉ์งํฉ -> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
intersect(p,q) # ๊ต์งํฉ -> 6 7 8 9 10
setdiff(p,q) # ์ฐจ์งํฉ -> 1 2 3 4 5
setequal(p, q) # ๋ ์งํฉ์ ๋์ผ์ฌ๋ถ -> FALSE
is.element(setdiff(p,q), p) # ์์ ์งํฉ์ ๋ค์ ๊ฐ ์์๊ฐ ์ ์์์ ์๋์ง ์ฌ๋ถ -> TRUE TRUE TRUE TRUE TRUE
is.element(setdiff(p,q), q) #-> FALSE FALSE FALSE FALSE FALSE
# ๋ฒกํฐ : ๋์ผํ ์์, 1์ฐจ์ ์งํฉ
c(1, 2, 3, 4, 5, 8, 9, 10)
c("we", "love", "data", "analytics")
ds <- c("FALL","SUMMER","SPRING", "WINTER")
ts <- c(ds[3], ds[2], ds[1], ds[4])
ts
c(TRUE, FALSE, TRUE, FALSE)
odd <- c(1, 3, 5)
even <- c(2, 4, 6)
# ํฉํฐ : ๋ฒ์ฃผํ, ์นดํ
๊ณ ๋ฆฌ
c("A", "B", "C", "A", "B")
factor(c("A", "B", "C", "A", "B")) # ์ฟผํ
์ด์
๋งํฌ ์ฌ๋ผ์ง.
# ํ๋ ฌ : 2์ฐจ์ ๋ฒกํฐ, (ํ๋ ฌ)
matrix(1:12, 3, 4) # colon : ์ฐ์๋ ์ซ์ 2์ฐจ์
# ๋ฐฐ์ด : ํ๋ ฌ์ ํ์ฅ , 3์ฐจ์ 4์ฐจ์ ...
array(1:12, c(2, 3, 2)) # 2ํ 3์ด์ ํ๋ ฌ 2๊ฐ
# ๋ฐ์ดํฐํ๋ ์ : ํ๋ ฌ๊ณผ ์ ์ฌํ ๊ตฌ์กฐ (๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋จ), ๊ฐ ์ด๋ง๋ค ๋ค๋ฅธ ์ ํ ๊ฐ๋ฅ. ๋ฐ์ดํฐ๋ฒ ์ด์ค
data.frame(product=c("A", "B", "C"),
price=c(100, 200, 300))
# ๋ฆฌ์คํธ : ๊ฐ์ฒด๋ค์ ์งํฉ ( ๋ฒกํฐ, ํ์ด, ๋ฐฐ์ด, ๋ฐ์ดํฐํ๋ ์, ๋ฆฌ์คํธ )๋ฑ์ ํฌํจ ํ ์ ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ, ๊ฐ์ฅ ์ ์ฐํจ.
list(x=c("A", "B", "C", "A", "B"),
y=matrix(1:12, 3, 4),
z=data.frame(product=c("A", "B", "C"),
price=c(100, 200, 300)))
# ๊ฒฐํฉ
odd <- c(1, 3, 5)
even <- c(2, 4, 6)
odd
even
c(odd, even) # ์๋์ ์์ ์ ์ง
# ์์ด์์ฑ
3:9
9:3
5:-3
# seq ํจ์
seq(from=3, to=9)
seq(from=3, to=9, by=2)
seq(from=3.5, to=1.5, by=-0.5)
seq(from=0, to=100, length.out=5) # ์ ์ฒด ์์์ ๊ฐฏ์ 5๊ฐ 1 - 100 ์ฌ์ด
seq(from=-1, to=1, length.out=5)
rep(1, times=3)
rep(c(1,2,3), times=3) # ์ ์ฒด ๋ฐฑํฐ ๋ฐ๋ณต
rep(c(1,2,3), each=3) # ๊ฐ ๊ตฌ์ฑ ์์ ๋ฐ๋ณต
rep(c(1,2,3), times=c(3, 5, 2)) # ๊ฐ ์์ ๋ณ ๋ฐ๋ณต ํ์ซ ์ง์
rep(c(1,2,3), length.out=8)
# ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ ํ์
์ซ์ + ๋ฌธ์ -> ๋ฌธ์๋ก ํต์ผ
number <- c(1, 2, 3)
char <- c("X", "Y", "Z")
c(number, char)
# ๋ฐฑํฐ์ ์ ๋ณด ๋ณด๊ธฐ
str(number) # num
str(char) # chr [์ฐจ์:์ธ๋ฑ์ค]
# ๋ฒกํฐ์ ๊ธธ์ด
length(number)
# ๋ด์ฅ๋ ์์ ๋ฒกํฐ
LETTERS
letters
month.name
month.abb
pi
month <- c(12, 9, 3, 5, 1)
month
month.name[month]
# ๋ฒกํฐ์ฐ์ฐ 1
1 + 2
"*"(3,5)
c(1, 2, 3, 4) * c(4, 5, 6, 7)
c(10, 20, 30) / c(2, 4, 6) # div
c(10, 20, 30) %% c(3, 5, 7) # mod, ๋๋จธ์ง ์ฐ์ฐ
c(10, 20, 30) %/% c(3, 5, 7) # ๋ชซ์ ๊ตฌํ๋ ์ฐ์ฐ
# ๋ฒกํฐ ์ฐ์ฐ 2
# Recycling Rule (์ฌ์ฌ์ฉ ๊ท์น, ๋ฒกํฐ์ ๊ธธ์ด๊ฐ ์๋ก ๋ค๋ฅผ ๋ ๋ฒกํฐ์ฐ์ฐ ๊ท์น)
c(1, 2, 3) + c(4, 5, 6, 7, 8, 9) # ์งง์ ์ชฝ์ ๋ฐ๋ณตํ์ฌ ๊ธธ์ด๋ฅผ ๋ง์ถฐ ์ฐ์ฐ.
c(1, 3, 5) + 10
c(1, 2, 3) + c(4, 5, 6, 7, 8) # ๊ฐฏ์๊ฐ ๋ฐฐ์๊ฐ ์๋ ๋, ์ฐ์ฐ์ ์ํ ํ์ง๋ง ๊ฒฝ๊ณ ์ถ๋ ฅ.
# ๋
ผ๋ฆฌ์ฐ์ฐ์ : ==, !=, <, >, <=, >=, !, |, &, isTRUE()
v <- pi
w <- 10/3
v == w
v != w
v > w
v < w
!(v > w)
(v == w) | (v < w)
(v == w) & (v < w)
isTRUE(v == w)
y <- c(0, 25, 50, 75, 100)
z <- c(50, 50, 50, 50, 50)
y == z
y != z
y >= z
y == 50
y > 50 # y == z ์ ๊ฐ์ ์๋ฏธ
as.numeric(TRUE)
as.numeric(FALSE)
TRUE * TRUE
TRUE * FALSE
TRUE + TRUE
sum(y > 50) # 50 ๋ณด๋ค ํฐ ์์์ ๊ฐฏ์
any(-3:3 > 0) # 0 ๋ณด๋ค ํฐ์ ๊ฐ ์๋ ์ง ํ์ธ
all(-3:3 > 0) # ๋ชจ๋ 0 ๋ณด๋ค ํฐ์ง ํ์ธ
sqrt(2)^2 == 2 # FALSE, ๋ถ๋์์์ ์ค์ฐจ
sqrt(2) ^ 2 - 2 # FALSE
identical(sqrt(2)^2, 2) # FALSE
all.equal(sqrt(2)^2, 2) # TRUE, ๋งค์ฐ ์์ ๊ฐ์ ๋ฌด์ ํจ.
all.equal(sqrt(2)^2, 3) # FALSE ๊ฐ ์๋ ์ค๋ช
์ด ์ฃผ์ ์ฃผ์ ๋์ด.
isTRUE(all.equal(sqrt(2)^2, 3)) # FALSE
fruit <- c("Apple", "Banana", "Strawberry")
food <- c("Pie", "Juice", "Cake")
paste(fruit, food) # ๋ฌธ์์ด๋ฒกํฐ ์ฐ์ฐ
paste(fruit, "Juice")
# [ ๋ฒกํฐ ํจ์ ]
abs(-3:3)
log(1:5) # ๋ฐ์๊ฐ e ์ธ ์์ฐ๋ก๊ทธ ๊ฐ.
log(1:5, base=exp(1))
log2(1:10)
log10(1:10)
exp(1:5) # ์์ฐ์์
y <- exp(1:5)
y
log(y)
factorial(1:5)
factorial(80)
choose(5, 2) # 5๊ฐ์์ 2๊ฐ๋ฅผ ๋ฝ๋ ๋ฐฉ๋ฒ, ๊ฒฝ์ฐ์ ์.
sqrt(1:5)
options("digits") # ์ ํจ ์๋ฆฟ์. ํ์ธ.
pi
pi*100
signif(456.789, digits = 4)
round(456.789, digits = 2)
round(456.789) # ์ ์๋ก ์ถ๋ ฅ.
round(sqrt(1:5), digits = 2)
round(456.789, digits = -2)
round(456.789,digits = -1)
round(11.5) # ๊ฐ์ฅ ๊ฐ๊น์ด ์ง์๋ก ๋ฐ์ฌ๋ฆผํจ. 12
round(12.5) # 12
round(13.5)
round(-3.5) # -4
round(-4.5) # -4
floor(456.789) # 456
ceiling(456.789) # 457
trunc(456.789) # 456, 0 ์ ๊ฐ๊น์ด ์ ์
# Inf, -Inf : ๋ฌดํ๋, ์ปดํจํฐ๊ฐ ๋ค๋ฃฐ์ ์๋ ์๋ณด๋ค ํฐ์. (1.8x10์ 308์น)
3/0
5 - Inf
Inf * Inf
Inf * (-Inf)
is.infinite(1/0)
is.infinite(1.8*10^308) # ๋ฌดํ๋
is.infinite(10^(305:310))
# NaN
Inf / Inf # NaN (Not a Number)
Inf * 0 # NaN
log(-2) # NaN
NaN + 3
is.nan(NaN + 3)
# NA ( ๊ฒฐ์ธก๊ฐ, Not Available )
k <- NA
k + 5
sqrt(k)
is.na(k) # check NA
is.na(k + 5)
is.na(NaN) # TRUE
z <- 1:5
z
sum(z)
prod(z) # ๋ชจ๋ ๊ณฑํ ๊ฐ.
max(z)
min(z)
mean(z) # ํ๊ท .
median(z)
range(z) # ์ต๋ ์ต์ ๊ฐ.
var(z) # ๋ถ์ฐ.
sd(z) # ํ์คํธ์ฐจ.
w <- c(1, 2, 3, 4, 5, NA) # ๊ฒฐ์ธก๊ฐ์ด ์๋ ๋ฒกํฐ.
sum(w) # NA
sum(w, na.rm = TRUE) # 15 Except NA
sum(na.omit(w)) # 15
# ๋ฏธ๋ฆฌ ์ ์๋ ๊ฐ ์ถ๋ ฅ ์์.
v <- c(NA, NA, NA, NA, NA)
sum(v, na.rm = TRUE) # 0, ์ฐจ๋ผ๋ฆฌ ์ค๋ฅ๊ฐ ๋์๋ฐ 0์ด ๋์ค๋ ๋ฌธ์ ๋ฐ์.
prod(v, na.rm = TRUE) # 1
max(v, na.rm = TRUE) # -Inf
min(v, na.rm = TRUE) # Inf
# ๋์ ํจ์.
traffic.death <- c(842, 729, 786, 751, 844, 851, 702)
cumsum(traffic.death) # ๋์ ํฉ๊ณ.
cumprod(traffic.death)
cummax(traffic.death)
cummin(traffic.death)
cumsum (c(3,5,6,7,NA,2,9)) # ๊ฒฐ์ธก ์ ๊ฑฐ ๋ฐฉ๋ฒ ์์.
diff(traffic.death) # ์ธ์ ํ ์ธ์๊ฐ์ ์ฐจ.
diff(c(3,5,6,7,NA,2,9))
diff(1:5, lag = 2)
# ์งํฉ
p <- 1:10
q <- 6:15
union(p,q) # ํฉ์งํฉ
intersect(p,q) # ๊ต์งํฉ
setdiff(p,q) # ์ฐจ์งํฉ
setdiff(q,p)
setequal(p, q) # ๋์ผ์ฑ ์ฌ๋ถ
is.element(setdiff(p,q), p) # ๊ฐ๊ฐ์ p ์์๊ฐ q์ ํฌํจ ๋์ด ์๋ ์ง ์ฌ๋ถ
# [ ๋ฒกํฐ ์ธ๋ฑ์ฑ] #
# --> ํน์ ์ธ๋ฑ์ค๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ : 1 ๋ถํฐ ์์ํจ.
num <-0:30 # 1 ~ 31 ๊น์ง ์ธ๋ฑ์ค.
num
prime <- c(2, 3, 5, 7, 11, 13, 17, 19)
prime
prime[3]
prime[1]
prime[2:5]
prime[-2] # ํด๋น ์ธ๋ฑ์ค์ ์์๋ฅผ ์ ๊ฑฐํ ์ ๋๋จธ์ง ์ถ๋ ฅ
prime[-1:-3]
prime[-(1:3)]
length(prime)
prime[1:(length(prime) -1)] # ๋ง์ง๋ง ์์ ์ ๊ฑฐ.
prime[-length(prime)]
prime[c(1,1,5,5)]
prime[c(1,3,5, 7)]
prime[c(7,5,3,1)]
indices <- c(1, 3, 5, 7) # index ์ ๋ณต์ํ.
prime[indices]
# ์์์์
prime <- c(2, 4, 5, 7, 11, 14, 17, 18)
prime[2] <- 3
prime[c(6,8)] <- c(13, 19)
# ์์์ถ๊ฐ
prime <- c(2, 3, 5, 7, 11, 13, 17, 19)
length(prime)
prime[9] <- 23
prime
prime[c(10, 11)] <- c(29, 31)
prime
prime[15] <- 47 # ํ์ฐธ ๊ฑด๋๋ฐ๊ณ ์์์ถ๊ฐ ๊ฐ๋ฅ ์ค๊ฐ์ NA ๋ก ์ฒด์์ง.
# ๋
ผ๋ฆฌ ์ฐ์ฐ์ผ๋ก ์ถ์ถ
prime <- c(2,3,5,7, 11, 13, 17, 19)
prime < 10
prime[prime < 10] # ์กฐ๊ฑด์ผ๋ก ์์ ์ถ์ถ
prime[prime %% 2 == 0]
seq_along(prime) # ์ธ์๋ก ์ ๊ณต๋ ๋ฒกํฐ์ ์์ ๊ฐฏ์ ๊น์ง 1 ๋ถํฐ ์๋ก์ด ๋ฒกํฐ ์์ฑ.
seq_along(prime) %% 2 == 0
prime
prime[seq_along(prime) %%2 == 0] # ๋งค 2๋ฒ์งธ ์์ ์ถ์ถ
prime[seq_along(prime) %% 3 == 0]
prime[c(FALSE, TRUE)] # ์ฌ์ฌ์ฉ ๊ท์น์ผ๋ก ์ถ์ถ
prime[c(FALSE, FALSE, TRUE)]
# which, month
rainfall <- c(21.6, 23.6, 45.8, 77.0, 102.2, 133.3, 327.9, 348.0, 137.6, 49.3, 53.0, 24.9) # ๊ฐ์๋.
which(rainfall > 100)
month.name[which(rainfall > 100)]
month.abb[which(rainfall > 100)]
which.max(rainfall)
month.name[which.max(rainfall)]
month.name[which.min(rainfall)]
rainfall[rainfall > 100]
rainfall[which.min(rainfall)]
rainfall[which.max(rainfall)]
traffic.death <- c(842, 729, 786, 751, 844, 851, 702)
names(traffic.death) <-c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat","Sun")
traffic.death
traffic.death["Sat"]
traffic.death[c("Tue", "Thu", "Sun")]
weekend <- c("Fri", "Sat", "Sun")
traffic.death[weekend]
traffic.death > 800
traffic.death[traffic.death > 800]
names(traffic.death[traffic.death > 800]) # ์ด๋ฆ๋ง ์ถ์ถ
# [ ํฉํฐ ] #
# ๋ ๋ฒจ์ ์์๋ก ํ๋ ๋ฒกํฐ, ๋ฒ์ฃผํ ๋ฐ์ดํฐ ํ์
review <- c("Good", "Good", "Indifferent", "Bad", "Good", "Bad")
review
review.factor <- factor(review)
review.factor
str(review.factor)
as.numeric(review.factor)
eventday <- c("Mon", "Mon", "Tue", "Wed", "Mon", "Wed", "Thu", "Fri", "Tue")
eventday.factor <- factor(eventday)
eventday.factor
eventday.factor <- factor(eventday, levels = c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"))
eventday.factor
levels(review.factor)
levels(review.factor) <- c("B", "G", "I")
review.factor
nlevels(review.factor)
length(levels(review.factor))
# Ordered Factor, ์์ด๋ฒกํฐ
eval <- c("Medium", "Low", "Hight", "Medium", "Hight")
eval.factor <- factor(eval)
eval.factor
eval.ordered <- factor(eval, levels = c("Low", "Medium", "Hight"), ordered = TRUE)
eval.ordered
table(eval.factor)
table(eval.ordered)
sex <- c(2, 1, 2, 2, 1, 0)
sex.factor <- factor(sex, levels = c(1, 2), labels = c("Male", "FeMale"))
table(sex.factor)
# factor, forcats #
install.packages("forcats") # install forcats package
library(forcats) # load package
temp <- c("Vegetables", "Fruits",
"Vegetables", "Grains",
"Fruits", "Vegetables",
"Dairy", "Fruits",
"Protenins", "Fruits")
food <- factor(temp)
fct_inorder(food) # ๊ทธ๋๋ก ์์๋๋ก
fct_infreq(food) # ์ถํ ๋น๋
fct_relevel(food, "Fruits", "Vegetables", "Grains", "Protenins", "Dairy") # ์์ ์ฌ์กฐ์
fct_relevel(food, "Protenins", after = 2) # ํน์ ์์น
fct_relevel(food, "Dairy", after=Inf) # ๋์ผ๋ก
value <- c(1000, 1500, 1200, 700, 2000, 2000, 1350, 2500, 15000, 3000)
food
# ์ค๋ณต๋ ๋ํ๊ฐ์ ์ค์์๋ก ๊ฒฐ์ .
fct_reorder(food, .x = value) # ์ค๋ฆ ์ฐจ์.
# ์ค๋ณต๋ ๋ํ๊ฐ์ ํ๊ท ์ผ๋ก ๊ฒฐ์ .
fct_reorder(food, .x = value, .fun = mean)
# ๋ด๋ฆผ์ฐจ์
fct_reorder(food, .x = value, .desc = TRUE)
# Rename
fct_recode(food, Fats="Protenins", Fats="Dairy")
food
# ๋๋ค
rnd <- runif(9) * 10
round(rnd)
# ํ๋ ฌ, matrix
v <- 1:12
dim(v) <- c(3,4)# 3ํ, 4์ด 2์ฐจ์ ํ๋ ฌ.
m <- 1:12
m
temp = matrix(data = m, nrow = 3, ncol = 4) # ์ด๋ฐฉํฅ์ผ๋ก ์ฑ์์ง.
temp
matrix(data = m, nrow = 3, ncol = 4, byrow = TRUE) # ํ์ ๋ฐฉํฅ์ผ๋ก ์ฑ์์ง.
rnames <- c("R1", "R2", "R3")
cnames <- c("C1", "C2", "C3", "C4")
matrix(data = m, nrow = 3, ncol = 4, byrow = TRUE, dimnames = list(rnames, cnames))
# ์ฒซ๋ฒ์งธ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ ํํธ
# ๋ชจ๋ ์ ํ ํ -> CMD( or Control) + Enter
cols <- c("SPRING", "SUMMER", "FALL", "WINTER")
rows <- c("Value")
nums <- c(3, 4, 2, 1)
mtrx <- matrix(data = nums, nrow=1, ncol = 4, byrow = TRUE, dimnames = list(rows, cols))
mtrx
# ๋๋ฒ์งธ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ ํํธ
n <- 12
type <- '-'
if (n %% 2 == 1) {
type <- 'odd'
}else {
type <- 'even'
}
print(type)
matrix(data = 0, 3, 4) # 0์ผ๋ก ์ฑ์์ง ํ๋ ฌ
?matrix
matrix(NA, 3, 4)
mat <- matrix(m, ncol = 4)
str(mat)
dim(mat) # ํ๊ณผ ์ด์ ์๋
dim(mat)[1] # ํ์ ์
dim(mat)[2] # ์ด์ ์
nrow(mat) # ํ์ ์
ncol(mat) # ์ด์ ์
length(mat) # ํ๋ ฌ์ ์
์ ๊ฐฏ์
# ๋ฒกํฐ ๊ฒฐํฉ์ผ๋ก ํ๋ ฌ ๋ง๋ค๊ธฐ
v1 <- c(1, 2, 3, 4, 5)
v2 <- c(6, 7, 8, 9, 10)
rbind(v1, v2)
cbind(v1, v2)
cbind(1:3, 4:6, matrix(7:12, 3, 2))
rbind(matrix(1:6, 2, 3), matrix(7:12, 2, 3))
# ํ๋ ฌ ์ฐ์ฐ
mtx <- matrix(1:6, 2, 3)
mtx
mtx + 1
mtx - 1
mtx * 2
mtx / 2
a <- matrix(1:6, 2, 3)
b <- matrix(6:1, 2, 3)
a
b
a + b
a - b
a * b
a / b
c <- matrix(6:1, 3,2)
c
a <- matrix(1:6, 2, 3)
a
b <- matrix(1:6, 3, 2)
b
a %*% b # ํ๋ ฌ ๊ณฑ
c <- matrix(1:6, 2, 3)
c
a
a %*% c
# ๋ฒกํฐ์ ํ๋ ฌ ๊ณฑ
mtx <- matrix(1:6, 2, 3)
mtx
mtx %*% 1:3
1:2 %*% mtx
mtx <- matrix(1:6, 2, 3)
mtx
mtx + 1:3 # ์ฌ์ฌ์ฉ ๊ท์น, ์ด ๋ฐฉํฅ.
mtx
rowSums(mtx)
colSums(mtx)
rowMeans(mtx)
colMeans(mtx)
# ์ ์นํ๋ ฌ (ํ->์ด, ์ด->ํ)
mtx
t(mtx)
t(1:5) # ์ด์์ ํ์ผ๋ก ์ ์น
mtx
mtx[2,]
t(mtx[2,])
# ํ๋ ฌ์ธ๋ฑ์ฑ
v <- 1:12
mat <- matrix(v, 3, 4)
mat
str(mat)
mat[1,1]
mat[2,2]
mat[2,]
mat[,3] # ๋ฒกํฐ๋ก ์ถ๋ ฅ ๋จ.๊ฐ๊ธ์ ์ฐจ์์ ์ค์์ผ๋ก ํ๋ ฌ์ ์์ํ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํจ.
mat[1,, drop= FALSE] # ํ๋ ฌ ์ฐจ์ ์ ์ง ๋จ
mat[,3, drop = FALSE]
mat[2:3,] # 2๋ฒ์งธ ๋ถํฐ 3๋ฒ์งธ
mat[,3:4] # 3๋ฒ์งธ ๋ถํฐ 4๋ฒ์งธ ์ด
mat
mat[c(1,3),] # 1๋ฒ 3๋ฒ ํ
mat[, -c(2,3)] # 2, 3๋ฒ ์ด ์ ์ธ
mat
mat[1,3] <-77
mat
mat[2,] <-c(22, 55) # ์ฌ์ฌ์ฉ ๊ท์น
mat
mat[2:3, 3:4] <-c(1, 2, 3, 4) # ํน๋ณํ ์ต์
์ ์ง์ ํ์ง ์์ผ๋ฉด ์ด๋ฐฉํฅ์ผ๋ก ๊ฐ์ ์ฑ์.
city.distance <- c(0, 331, 238, 269, 195,
331, 0, 95, 194, 189,
238, 95, 0, 171, 130,
269, 194, 171, 0, 77,
195, 189, 130, 77,0)
city.distance
city.distance.mat <- matrix(city.distance, 5, 5, byrow = TRUE)
city.distance.mat
# ํ๋ ฌ์ ์ด๋ฆ์ง์
colnames(city.distance.mat) <- c("Seoul", "Busan", "Daegu", "Gwangju", "Jeonju")
rownames(city.distance.mat) <- c("Seoul", "Busan", "Daegu", "Gwangju", "Jeonju")
city.distance.mat
colnames(city.distance.mat)
rownames(city.distance.mat)
city.distance.mat["Seoul", "Busan"] # Seoul - Busan distance
city.distance.mat[, "Seoul"]
city.distance.mat[c("Seoul", "Gwangju"), ]
# [ ๋ฐฐ์ด ]
#--> ๋ฒกํฐ(1์ฐจ์)์ ํ๋ ฌ(2์ฐจ์)์ ๋ฐฐ์ด์ ํ ํน๋ณํ ์ ํ์ ํด๋น๋จ.
#--> ๋ฐฐ์ด์ ์ธ๊ฐ ์ด์์ ์ฐจ์์ ๊ฐ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋งํจ.
#--> ๋ฒกํฐ์ ์ฐจ์์ ๋ถ์ฌ ํ์ฌ ๋ง๋ฆ
# 3์ฐจ์ ๋ฐฐ์ด
a <- 1:24
a
dim(a) <- c(3, 4, 2) # 3์ฐจ์ ๋ฐฐ์ด ์์ฑ.
a
array(1:12, c(2, 3, 2))
# ๊ฐ ์ถ์ถ
arr <- array(1:12, c(2, 3, 2))
arr
arr[1, 3, 2] # 2๋ฒ์งธ ํ
์ด๋ธ์ 1ํ 3์ด.
arr[,1,2] # 2๋ฒ์งธ ํ
์ด๋ธ์์ ์ฒซ๋ฒ์งธ ์ด์ ๋ชจ๋ ์ด, ์ฐจ์์๊ฐ ์ค์ด๋ฌ, ๋ฒกํฐ๋ก ์ถ๋ ฅ.
arr[,1,2, drop = FALSE] # ๋ฐฐ์ด ํ์ ์ ์ง.
arr[2,,] # ํ์ด ์ด๋ก ๋ณ๊ฒฝ๋จ.
# [ ๋ฆฌ์คํธ ]
# ์๋ก ๋ค๋ฅธ ์ ํ์ ๋ฐ์ดํฐ๋ฅผ ์์ฉ๊ฐ๋ฅํจ.
# list ํจ์
# ํ์ฉ๋๊ฐ ๋งค์ฐ ๋์ ๋ฐ์ดํฐ ๊ตฌ์กฐ.
list(0.6826, 0.9544, 0.9974)
list(1.23, "Apple", c(2,3,5,7), matrix(1:6, ncol = 3), mean)
lst <- list()
lst
lst[[1]] <-1.23
lst[[2]] <- "Apple"
lst[[3]] <- c(2,3,5,7)
lst[[4]] <- matrix(1:6, ncol = 3)
lst[[5]] <- mean
lst
lst <- list(0.6826, 0.9544, 0.9974)
lst
names(lst) <- c("sigma1", "sigma2", "sigma3") # namming : names ํจ์
lst
names(lst)
length(lst)
hello <- list("Brazil", "Africa", "Germany")
world <- list("Korea", "France", "USA")
hello
world
c(hello, world) # ํฉ์น๊ธฐ
a <- list(1,2,3,4,5,6,7)
a
mean(unlist(a)) # ๋ฒกํฐ๋ก ๋ง๋ฌ.
min(unlist(a))
max(unlist(a))
# ๋ฆฌ์คํธ ์ธ๋ฑ์ฑ.
# [[]] : ์๋ฃจ ๋ด์ ํฌํจ๋ ๋ฐ์ดํฐ
# [] : ์๋ฃจ ์์ฒด ์ถ์ถ (์์)
product <- list("A002", "Mouse", 30000)
product
product[[3]] #-> 30000
product[[2]] #-> "Mouse"
product[3] #-> ์๋ฃจ ์์ฒด๋ฅผ ๋ค ์ถ์ถํจ.
product[2]
class(product[[3]]) # -> numeric
class(product[3]) # -> list
product[[3]] * 0.9
product[c(1,2)]
product[c(FALSE, TRUE, TRUE)] # 2, 3 ๋ฒ์งธ ์์๋ง ์ถ์ถ
product[-1] # ์ฒซ๋ฒ์งธ ์์ ์ ๊ฑฐ
# naming
product <- list(id = "A002", name = "Mouse", price = 30000)
product
product[["name"]]
product$name
product[c("name", "price")]
# ์ค๋ฅ๋ฐ์ ์ํ๋ค.
product[["fourth"]] # NULL
product$fourth # NULL
product[[4]] # Error
product[c(4,2,5)] # NULL Mouse NULL, no error
product[c("fourth", "name", "fifth")]
lst <- list(one= 1, two=2, three=list(alpha=3.1, beta=3.2)) # ์ค์ฒฉ ๊ตฌ์กฐ
lst
lst[["three"]]
lst$three$beta
lst[["three"]][["beta"]]
# ๊ฐ๋ณ๊ฒฝ
prod <- list(id="A001", name="Mouse", price="30000")
prod
prod[[3]] <- 35000
prod
prod$price <- 400000
prod
prod$price <- 33000
prod$price
prod[3] <- 37500
prod
prod["price"] <- 39000
prod$price
# ์ฌ๋ฌ๊ฐ์ ๊ฐ์ ํ ๋นํ ๋
# ๋๊ดํธ 2๊ฐ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
prod[[3]] <- c(30000, 35000)
# ๋๊ดํธ 1๊ฐ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
prod[3] <- list(c(31000, 37500))
prod
prod[1:3] <- list("A002", "Keyboard", "90000")
prod
prod[[4]] <- c("Demestic", "Export")
prod
prod$madein <- c("Korea")
prod[[""]]
prod
# [ ๋ฐ์ดํฐ ํ๋ ์ ] #
v1 <- c("A001", "A002", "A003")
v2 <- c("Mouse", "Keyboard", "USB")
v3 <- c(30000, 90000, 50000)
data.frame(v1, v2, v3) # ์ด๋ก ๊ตฌ์ฑ,
# ๋ฒกํฐ ์ค ํ๋๋ฅผ ํ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๊ธฐ
data.frame(row.names = v1, v2, v3)
# ์๋ฏธ์๋ ์ด๋ฆ์ผ๋ก ์ง์ ํ๊ธฐ
product <- data.frame(id=v1, name=v2, price=v3, stringsAsFactors = FALSE)
product
str(product)
# from matrix
mat <- matrix(c(1, 3, 5, 7, 9,
2, 4, 6, 8, 10,
2, 3, 5, 7, 11), ncol = 3)
mat
as.data.frame(mat)
number <- as.data.frame(mat)
colnames(number) <-c("odd", "even", "prime")
number
# from list
v1 <- c("A001", "A002", "A003")
v2 <- c("Mouse", "Keyboard", "USB")
v3 <- c(30000, 90000, 50000)
lst <- list(v1, v2, v3)
lst
prod = as.data.frame(lst)
colnames(prod) <- c("id", "name", "price")
prod
nrow(prod)
ncol(prod)
length(prod) # count of cells
# ๋ฐ์ดํฐ ํ๋ ์ ํ์ฅ (rbind, cbind)
id <- c("A001", "A002", "A003")
name <- c("Mouse", "Keyboard", "USB")
price <- c(30000, 90000, 50000)
product <- data.frame(id, name, price,
stringsAsFactors = FALSE)
product
# rbind : ํ์ถ๊ฐ
product <- rbind(product, c("A004", "Monitor", "250000"))
product
new.rows <- data.frame(id = c("A005", "A006"),
name = c("Memory", "CPU"),
price = c(35000, 330000))
new.rows
product <- rbind(product, new.rows)
product
# cbind : ์ด๋ฐฉํฅ ์ถ๊ฐ
product <- cbind(product,
madein = c("Korea", "USA", "Africa", "Korea", "Korea", "USA"))
product$madein <- c("Korea", "USA", "Africa", "Korea", "Korea", "USA")
product
new.cols <- data.frame(manufacturer = c("Logitech",
"Samsung",
"Samsung",
"Samsung",
"Intel",
"Logitech"),
quantity = c(20, 15, 50, 30, 40, 10))
new.cols
product <- cbind(product, new.cols)
product
# ๊ฐ์ ์ด ์ด๋ฆ์ ์ฑํฌํ์ง ์์.
cols1 <- data.frame(x = c("a", "b", "c"),
y = c(1, 2, 3))
cols1
cols2 <- data.frame(x = c("alpha", "beta", "gamma"),
y = c(100, 200, 300))
cols2
cbind(cols1, cols2)
df1 <- data.frame(sex = "female", months = 1, weight = 3.5) # ์ ์์์ ์ ๋ณด
df2 <- data.frame(sex = "male", months = 3, weight = 4.8) # ์ ์์์ ์ ๋ณด
df3 <- data.frame(sex = "male", months = 4, weight = 5.3) # ์ ์์์ ์ ๋ณด
df4 <- data.frame(sex = "female", months = 9, weight = 9.4) # ์ ์์์ ์ ๋ณด
df5 <- data.frame(sex = "female", months = 7, weight = 8.3) # ์ ์์์ ์ ๋ณด
lst <- list(df1, df2, df3, df4, df5)
lst
str(lst)
lst[[1]]
lst[[2]]
rbind(lst[[1]], lst[[2]])
do.call(rbind, lst)
# ๋ฐ์ดํฐํ๋ ์ ์ธ๋ฑ์ฑ
?state
state.abb
state.area
us.state <- data.frame(state.abb, state.name,
state.region, state.area,
stringsAsFactors = FALSE)
us.state
str(us.state)
us.state[[2]]
str(us.state[[2]])
us.state[2] # ๋ฐ์ดํฐ ํ๋ ์ ํ์.
us.state[c(2,4)]
us.state[,2] # vector type
us.state[,2, drop = FALSE] # origin
us.state[,c(2,4)] # dataframe type, cols 2, 4
us.state[["state.name"]] # string vector
us.state$state.name
us.state[,"state.name"]
us.state[c("state.name", "state.area")] # dataframe type, list indexing
us.state[,c("state.name", "state.area")] # dataframe type, matrix indexing
state.x77
str(state.x77)
head(state.x77)
states <- data.frame(state.x77)
str(states)
row.names(states)
states$Name <- row.names(states)
row.names(states) <- NULL
head(states)
# --> ๋ถ์ ๋๋ค
rich.states <- states[states$Income > 5000, c("Name", "Income")]
rich.states
# --> ํฐ ๋๋ค
large.state <- states[states$Area > 100000, c("Name", "Area")]
large.state
# --> ๋ถ์์ด๋ฉด์ ๋
์ด ๋์ ๋๋ค.
merge(rich.states, large.state)
?merge
merge(rich.states, large.state, all=TRUE) # ํฉ์งํฉ
cat('Hi\nHello\nHow Are You?\nFineThanks\nAnd\nYou?')
message <- c("Hello", "World", "How", "Are", "You?")
writeLines(message)
sum <- 0
i <- 1
while(TRUE) {
sum = sum + i
if(i > 100)
{
break;
}
i <- i + 1
}
cat("1 + 2 + 3...", i, "=", sum)
num1 = 5
num2 = 9
m <- num1 + num2 * nchar("computing")
print(m)
size <- nchar("computing")
size
9 * 9 + 5
t = "981214"
d = as.Date("1998-12-24")
print(d+2000)
format(d+1000, "%Y๋
%m์ %d์ผ")
์ฐ๊ด์ฝ๋
###### ๋ฐฑํฐ ์ธ๋ฑ์ฑ #####
num <- 0:30 # ์ธ๋ฑ์ค๋ 1๋ถํฐ ์์
# ๊ธฐ๋ณธ์์
prime <- c(2, 3, 5, 7, 11, 13, 17, 19)
prime[1]
prime[3]
prime[4:6]
prime[c(1, 1, 5, 5)] # ์ค๋ณต์ ํ๊ฐ๋ฅ
indices <- c(1, 3, 5, 7)
prime[indices]
prime[-1] # ์์๋ ํด๋น ์ธ๋ฑ์ค๋ฅผ ์ ์ธํ ํ ์ถ๋ ฅ, 3 5 7 11 13 17 19
prime[-(1:3)] # 7 11 13 17 19
length(prime) # ๋ง์ง๋ง์์์ ์ธ๋ฑ์ค
prime[1:length(prime) - 1] # ๋ง์ง๋ง์์๋ฅผ ์ ์ธํ ๋ชจ๋ ์์
prime[-length(prime)] # ์์ ๋์ผ
# ๊ฐ๋ณ๊ฒฝ
prime <- c(2, 4, 5, 7, 11, 14, 17, 18)
prime[2] <- 3
prime
prime[c(6,8)] <- c(13, 19)
# ๊ฐ ์ถ๊ฐ
prime <- c(2, 3, 5, 7, 11, 13, 17, 19)
length(prime)
prime[9] <- 23 # ์๋ ์ธ๋ฑ์ค์ ์ถ๊ฐํ๋ฉด๋จ
prime
prime[c(10, 11)] <- c(29, 30) # ๋ค์ ์ถ๊ฐ
prime[15] <- 47 # ์ ์ฒด ๋ฐฑํฐ์์ ์ค๊ฐ์ ๊ฑดํฐ๋ฐ๊ณ ์ถ๊ฐ ๊ฐ๋ฅ, ๊ฑดํฐ๋ด ์ค๊ฐ์ NA ๊ฐ์ผ๋ก ์ฑ์์ง
prime <- c(2, 3, 5, 7, 11, 13, 17, 19)
prime < 10
prime[prime < 10] # ๋
ผ๋ฆฌ์ฐ์ฐ์ ํตํ ์์ ์ ํ, 10๋ณด๋ค ์์ ์์
prime[prime %% 2 == 0] # ์ง์์ธ ์์์ ํ
seq_along(prime) # ์ธ์๋ก ์ ๊ณตํ๋ ์ซ์ ๋งํผ ์ผ๋ จ๋ฒํธ๋ฅผ ์์ฑํจ
prime[seq_along(prime) %% 2 == 0] # ๋งค 2๋ฒ์งธ ์์ ์ถ์ถ
prime[seq_along(prime) %% 3 == 0] # ๋งค 3๋ฒ์งธ ์์ ์ถ์ถ
prime[c(FALSE, TRUE)] # ์ฌ์ฌ์ฉ ๊ท์น์ ์ํ์ฌ 8๊ฐ ์์๋ฅผ ๋ฐ๋ณตํด์ ์ฐพ์, ๋งค 2๋ฒ์งธ ์์์ถ์ถ ๊ฒฐ๊ณผ์ ๋์ผ
which() # ์ฐธ์ธ๊ฒฐ๊ณผ์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ
which.max()
which.min()
rainfall <- c(21.6, 23.6, 45.8, 77.0, 102.2, 133.3, 327.9, 348.0, 137.6, 49.3, 53.0, 24.9) # ๊ฐ์๋
rainfall
which.max(rainfall)
which(rainfall > 100)
which(rainfall == 23.6)
which.min(rainfall)
month.name
month.name[which.max(rainfall)] # ์์ด๋ฆ ์ถ๋ ฅ
CONCLUSION
R ์ฝ๋์กฐ๊ฐ
์ญ์ ๊ถํ ํ์ธ ์ค...
์์ ๊ถํ ํ์ธ ์ค...