๋ฐ์ดํ„ฐ๋ถ„์„๊ฐ€ ๊ณผ์ •/R

DAY09. R Basic (ํŒจํ‚ค์ง€์™€ ์„ธ์…˜, ๋ณ€์ˆ˜์™€ ์ž๋ฃŒํ˜•)

LEE_BOMB 2021. 9. 24. 18:25

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)