DAY09. R Basic (ํจํค์ง์ ์ธ์ , ๋ณ์์ ์๋ฃํ)
1. ํจ์งํค์ ์ธ์ ํ์ธ
dim(available.packages())
#[1] 18082 17 -> 18082(ํ)๊ฐ์ ๊ฐ์ฉ ํจํค์ง ๊ฐ์
์ธ์
(session) : R์์~์ข
๋ฃ ์ ๊น์ง์ R์ ์์
ํ๊ฒฝ
sessionInfo()
-> R๋ฒ์ , OS, ๋ค๊ตญ์ด(locale), base packages(7๊ฐ) ์ ๋ณด ํ์ธ
์ฃผ์ ๋จ์ถํค
์คํฌ๋ฆฝํธ ์คํ : Ctrl + Enter
์๋์์ฑ : Ctrl + Space
์คํฌ๋ฆฝํธ ์ ์ฅ : Ctrl + S
์ฌ๋ฌ ์ค ์ฃผ์์ฒ๋ฆฌ : Ctrl + Shift + C
R์คํฌ๋ฆฝํธ ์คํ๋ฐฉ๋ฒ 2๊ฐ์ง
1) ์ค ๋จ์ ์คํ
r <- rnorm(1000)
print(r)
hist(r)
mean(r)
sd(r)
2) ๋ธ๋ญ ๋จ์ ์คํ
"pdf("๊ฒฝ๋ก๋ช
")
hist(r)
dev.off()
2. ํจํค์ง ์ฌ์ฉ๋ฒ
๊ธฐ๋ณธ ์ค์น๋ ํจํค์ง : 30๊ฐ(์ค 7๊ฐ๋ base)
package = ํจ์ + ๋ฐ์ดํฐ์
1) ํจํค์ง ์ค์น
install.packages('stringr') # ๋ค์ด๋ก๋ -> ์ค์น
์์กด์ฑ ์๋ ํจํค์ง๊ฐ ํจ๊ป ์ค์น๋จ
2) ํจํค์ง ์ค์น ๊ฒฝ๋ก
.libPaths()
[1] "C:/Users/..." -> ์ฌ์ฉ์๊ฐ ์ค์นํ ํจํค์ง ๊ฒฝ๋ก
[2] "C:/Program Files/R/R-4.1.1/library" -> ์ต์ด 30๊ฐ ํจ์งํค๊ฐ ์๋ ์ค์น๋จ
3) ํจํค์ง ์ฌ์ฉ : in memory
library(stringr)
library(help='stringr')
string <- "ํ๊ธธ๋35์ด์์ 45์ ๊ด์25" #๋ฌธ์์ด ๊ฐ์ฒด
str_extract_all(stirng, "[0-9]{2}") #๋์ด์ถ์ถ
str_extract_all(string, "[๊ฐ-ํฃ]{3}") #์ด๋ฆ์ถ์ถ
4) ํจํค์ง ์ญ์
remove.packages('stringr') # ์ค์น ํด๋์์ or๋ฌผ๋ฆฌ์ ์ ๊ฑฐ
3. ๋ณ์์ ์๋ฃํ
1) ๋ณ์์ ๊ฐ๋
์๋ฃ(๊ฐ์ฒด)๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์
2) ๋ณ์๋ช
์์ฑ ๊ท์น, ํน์ง
์์ ์๋ฌธ, ์ซ์ ํผ์ฉ, ํน์๋ฌธ์(_, .)
ex) kor100, member_id, memeber.pw ํ๊ธ์ ๋น๊ถ์ฅ
์ฃผ์ : ๋ช
๋ น์ด, ํจํค์ง๋ช
, ํจ์๋ช
์ฌ์ฉ ๋ถ๊ฐ
๋๋ฌธ์, ์๋ฌธ์ ๊ตฌ๋ถ
๊ฐ์ฅ ์ต๊ทผ๊ฐ์ผ๋ก ์์
kor <- 90
mat <- 80
tot = kor+mat # =, <-๋ ๋์ธ์ฐ์ฐ์. ์ฐ๋ณ์ ์๋ ๊ฐ์
tot # = print(Tot)
TOT = (kor + mat) * 0.1
vector : ํฌ๊ธฐ์ ๋ฐฉํฅ, ์ฌ๋ฌ๊ฐ์ ์์๋ฅผ ๊ฐ๋ ๋ณ์. ์์ธ ์ ๊ณต.
names <- c('ํ๊ธธ๋','์ด์์ ','์ ๊ด์')
names # [1] "ํ๊ธธ๋" "์ด์์ " "์ ๊ด์" -> [1]:์์ธ(index)
names[2] #๊ฒฐ๊ณผ๊ฐ:๋ ๋ฒ์งธ ์์ธ "์ด์์ "
3) ์๋ฃํ(data type)
int <- 1000 #์ซ์ํ
string <- '์ฐ๋ฆฌ๋๋ผ ๋ํ๋ฏผ๊ตญ' #๋ฌธ์ํ. "์ฐ๋ฆฌ๋๋ผ ๋ํ๋ฏผ๊ตญ" ๋ ๊ฐ๋ฅ
boolean <- TRUE #๋ฌธ์ํ. ๋๋ FALSE
int; string; boolean
mode(๋ณ์) : ์๋ฃํ ์ถ๋ ฅ
mode(int) #์ถ๋ ฅ๊ฐ numeric
mode(string) #์ถ๋ ฅ๊ฐ character
mode(boolean) #์ถ๋ ฅ๊ฐ logical
is.xxxx(๋ณ์) -> T/F ์ถ๋ ฅ
is.numeric(int) #์ถ๋ ฅ๊ฐ TURE
is.character(string)
is.logical(boolean)
is.logical(string) #์ถ๋ ฅ๊ฐ FALSE
is.na() #๊ฒฐ์ธก์น์ด๋ฉด TURE ์ถ๋ ฅ
score <- c(50, 70, NA, 89, 50)
score #์ถ๋ ฅ๊ฐ 50 70 NA 89 50
is.na(score) #์ถ๋ ฅ๊ฐ FALSE FALSE TRUE FALSE FALSE
4) ์๋ฃํ ๋ณํ(casting)
as.xxxx(x) : ํ์ฌ x์ ๋ณ์๊ฐ์ ํจ์๋ก์จ ์๋ฃํ์ผ๋ก ์ถ๋ ฅ
(1) ๋ฌธ์ํ -> ์ซ์ํ
x <- c(10,20,30,40)
mode(x) #์ถ๋ ฅ๊ฐ numeric
x <- c(10,20,30,'40')
mode(x) #์ถ๋ ฅ๊ฐ character. ๋ฒกํด์ ํญ์ ๋์ผํ ์๋ฃํ๋ง์ ๊ฐ์ง๊ณ ์๋ค.
x #"10" "20" "30" "40"
barplot(x) #error
num <- as.numeric(x) #ํ๋ณํ
mode(num) #"numeric"
sum(num) #100
barolot(num)
(2) ์์ธํ(Factor) ๋ณํ
์ง๋จ๋ณ์ ๋์
๋
๋ฆฝ๋ณ์ (์ค๋ช
๋ณ์)๋ ๋ฒ์ฃผํ ๋์์ ๋๋ฏธ๋ณ์(0,1)๋ก ๋ณํ
gender <- c('M','F','F','M','M')
mode(gender)
plot(gender) -> error
gender # ์ถ๋ ฅ๊ฐ : "M" "F" "F" "M" "M"
fgender <- as.factor(gender) #ํ๋ณํ
fgender # ์ถ๋ ฅ๊ฐ : [1] M F F M M
# Levels: F(1):0, M(2):1 -> ์๋ฌธ ์ค๋ฆ์ฐจ์
str(fgender)
์ถ๋ ฅ๊ฐ Factor w/ 2 levels "F","M": 2 1 1 2 2 -> ๋ ๋ฒจ์ ์์น๋ก ํ์ธ ๊ฐ๋ฅ
plot(fgender) # -> ๊ธฐ์กด ๋ฌธ์ํ์์ ์ถ๋ ฅ๋์ง ์๋ ์ฐจํธ ์ถ๋ ฅ๋จ
mode(fgender) # ์ถ๋ ฅ๊ฐ "numeric"
mode VS class
mode(fgender) # ์๋ฃํ : "numeric"
class(fgender) # ์๋ฃ๊ตฌ์กฐ (๊ฐ์ฒด ์ถ์ฒ) "factor"
์์ธํ ๋ณํ ์ ์ฃผ์์ฌํญ
num <- c(4,2,4,2) # ์นดํ
๊ณ ๋ฆฌ๋ก ๋ฌถ์ผ ์ ์๋ ๋ณ์
mode(num) # ์ถ๋ ฅ๊ฐ "numeric"
์ซ์ํ -> ์์ธํ
fnum <- as.factor(num)
fnum # ์ถ๋ ฅ๊ฐ [1] 4 2 4 2
์์ธํ -> ์ซ์ํ (์๋ชป๋ ๊ฒฐ๊ณผ ๋ฐํ)
num2 <- as.numeric(fnum)
num2 # ์ถ๋ ฅ๊ฐ 2 1 2 1 -> level์ ์ํด ๊ฐ์ด ๊ฒฐ์ ๋์๊ธฐ ๋๋ฌธ์ 2,4๊ฐ 1,2๋ก ๋ณํ
(a) ์์ธํ -> ๋ฌธ์ํ-> ์ซ์ํ
cnum <- as.character(fnum)
num2 <- as.numeric(cnum)
num2
(3) ๋ ์งํ ๋ณํ
Sys.Date() # ์ถ๋ ฅ๊ฐ 2021-09-09
Sys.time() # ์ถ๋ ฅ๊ฐ "2021-09-09 11:52:28 KST"
today <- "2021-09-09 11:52:28"
mode(today) # ์ถ๋ ฅ๊ฐ "character"
๋ฌธ์ํ -> ๋ ์งํ ๋ณํ
ctoday = as.Date(today)
mode(ctoday) # ์ถ๋ ฅ๊ฐ "numeric" : ํ๋ณํ์ ํตํด ์ซ์ํ์ผ๋ก ๋ณ๊ฒฝ๋จ
class(ctoday) # ์ถ๋ ฅ๊ฐ "Date" : ์ถ์ฒํ์ธ. ๋ ์งํ ๊ฐ์ฒด์์ ์ ์ ์์
4. ๊ธฐ๋ณธํจ์ ์ฌ์ฉ & ์์
๊ณต๊ฐ
1) ๊ธฐ๋ณธํจ์ : 7๊ฐ. ํจํค์ง๊ฐ ํฌํจ๋ ํจ์
2) ๊ธฐ๋ณธ ๋ฐ์ดํฐ์
: RSTUDIO ์ ๊ณต
data()
data("Nile") #in memory
Nile
mode(Nile)
length(Nile)
plot(Nile)
mean(Nile)