๐Ÿ’ฏR ํ•จ์ˆ˜ ์ •๋ฆฌ

๊น€ํƒœ์ค€ยท2022๋…„ 12์›” 4์ผ
0

R-Studio

๋ชฉ๋ก ๋ณด๊ธฐ
1/5

R ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋„ ํ•™๊ต ๊ฐ•์˜๋กœ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋Š” ์š”์ฆ˜, ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ• ๋ฐ ์‹œ๊ฐํ™” ํ•จ์ˆ˜๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค!
์ •๋ฆฌ ๋ฐฉ์‹์€ ๊ธฐ๋ณธ์ ์ธ ํ•จ์ˆ˜ ์ •๋ฆฌ ๋ฐ ์‹ค์Šต ๋ฌธ์ œ ํ’€์ด ์ •๋ฆฌ๋กœ ๊ตฌ์„ฑ๋  ๊ณ„ํš์ด๋‹ค!

๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

dplyr : ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ์‹œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ
ggplot2 : ์‹œ๊ฐํ™” ์‹œ ์‚ฌ์šฉ
ggthemes : ggplot์œผ๋กœ ์ƒ์„ฑ๋œ ์‹œ๊ฐํ™” ํ•จ์ˆ˜๋“ค์˜ ํ…Œ๋งˆ ๋ณ€๊ฒฝ
reshape : ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ ๋“ฑ์— ์‚ฌ์šฉ
haven : sav ํŒŒ์ผ read ์‹œ ์‚ฌ์šฉ
readxl : csv, excel ํŒŒ์ผ read ์‹œ ์‚ฌ์šฉ
wordcloud : wordcloud ์‹œ๊ฐํ™”์— ์‚ฌ์šฉ
RClorBrewer : color ๊ทธ๋ผ๋ฐ์ด์…˜์— ํ™œ์šฉ

๋ฐ์ดํ„ฐ ์ฝ์–ด์˜ค๊ธฐ

excel, csv, sav ๋“ฑ๋“ฑ

1) excel
install.packages('readxl')
library(readxl)
df <- read_excel('exam.xlsx)
๋งŒ์ผ, ์—‘์…€์˜ ์ฒซ๋ฒˆ์งธ ํ–‰์ด ๋ณ€์ˆ˜๋ช…์ด ์•„๋‹Œ ๊ฒฝ์šฐ
df <-read_excel('exam.xlsx', col_names = F)

2) csv
df <- read.csv('exam.csv')
๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์ธ ๊ฒฝ์šฐ
df <- read.csv('exma.csv', stringAsFactors = F)

3) sav ํŒŒ์ผ์˜ ๊ฒฝ์šฐ 'haven' ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
library(haven)
df <- read_sav(file = '.sav', encoding = 'UTF-8')

๋ณ€์ˆ˜ ์„ค์ •

df <- as.data.frame(ggplot::mpg)
R ์—์„œ๋Š” <- OR =์„ ํ†ตํ•ด ๋ณ€์ˆ˜ ์„ค์ • ๊ฐ€๋Šฅ! ๋Œ€๊ฐœ <-๋กœ ๋ณ€์ˆ˜ ์„ค์ •ํ•จ

ํ•จ์ˆ˜

ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜๋ช…๊ณผ ๊ด„ํ˜ธ๋กœ ๊ตฌ์„ฑ, ํ•จ์ˆ˜์— ์ „๋‹ฌํ•  ์ธ์ž(๋ฐ์ดํ„ฐ)๋‚˜ ํ•จ์ˆ˜์˜ ๋™์ž‘์„ ์ œ์–ดํ•  ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์กด์žฌ

์ˆซ์ž๋ฅผ ๋‹ค๋ฃจ๋Š” ํ•จ์ˆ˜

 mean() : ์ธ์ž๋กœ ๋ฐ›์€ ๋ฐ์ดํ„ฐ์˜ ํ‰๊ท ์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
 max() : ์ธ์ž๋กœ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋“ค์˜ ์ตœ๋Œ€๊ฐ’ ์ถœ๋ ฅ 
 min() : ์ธ์ž๋กœ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋“ค์˜ ์ตœ์†Ÿ๊ฐ’ ์ถœ๋ ฅ
 
 ex) x<- c(1,2,3)
 mean(x)
 max(x)
 min(x)

๋ฌธ์ž๋ฅผ ๋‹ค๋ฃจ๋Š” ํ•จ์ˆ˜

paste() : ์ธ์ž๋กœ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋“ค์„ ํ•˜๋‚˜์˜ ๋ฌธ์žฅ์œผ๋กœ ๊ฒฐํ•ฉ
ex) str1 <- paste('Hello!', 'world!', 'is', 'good')
paste(str1)
paste(str1, collaspe= ' ')

< ๊ฒฐ๊ณผ >

์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜

mycal2 <- function(a, b) {
  c <- a + b 
  d <- a * b
    return(list(sum = c, mul = d))
}
result <- mycal2(2,10)
result
result$sum
result$mu

< ๊ฒฐ๊ณผ >

๊ฒฐ์ธก์น˜ ๋Œ€์ฒด

x <- c(10, 11, 12, NA, 15, NA, NA)

### R์€ ์ธ๋ฑ์Šค๊ฐ€ 1๋ถ€ํ„ฐ ์‹œ์ž‘!
x[1]

### NA ๊ฐ’์„ 0์œผ๋กœ ๋Œ€์ฒด
x[is.na(x)] <- 0

### NA ์ œ์™ธํ•˜๊ณ  ํ‰๊ท ๊ฐ’ ๊ตฌํ•˜๊ธฐ
mean(x, na.rm = T)

### ๊ฒฐ์ธก์น˜๋ฅผ ํ‰๊ท ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌ
x[is.na(x)] <- mean(x, na.rm = T)

y <- c(10, 9, NA, NA, 6, 4, NA, 1, NA)

### y ๋ฒกํ„ฐ์—์„œ NA ์ œ์™ธํ•˜๊ณ  ๋ฒกํ„ฐํ™”
z <- as.vector(na.omit(y))
z

๋ฐ์ดํ„ฐ ์ •๋ ฌ

x <- c(2, 5, 3, 9, 4, 8, 1) 
# ์ˆซ์ž ํฌ๊ธฐ ์ˆœ์œผ๋กœ๋งŒ ์ •๋ ฌ (๋””ํดํŠธ๊ฐ’์€ ์˜ค๋ฆ„์ฐจ์ˆœ)
order(x, na.last = TRUE, decreading = TRUE)

์ฃผ์–ด์ง„ ๋ฒกํ„ฐ ์ž์ฒด๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
y1 <- sort(x)

๋ฐ์ดํ„ฐ ๊ฐ€๊ณตํ•˜๊ธฐ

๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ

df <- data.frame(var1 = c(1,2,3), var2 = c(4,5,6))
dplyrํŒจํ‚ค์ง€์˜ rename ํ•จ์ˆ˜ ์‚ฌ์šฉ
df <- rename(df, '๋ฐ”๊ฟ€ ๋ณ€์ˆ˜๋ช…' = '๊ธฐ์กด ๋ณ€์ˆ˜๋ช…')

dplyr ํ•จ์ˆ˜

  1. filter : ํ–‰ ์ถ”์ถœ
    exam <- read.csv('exam.csv')
    exam %>% filter('์ปฌ๋Ÿผ๋ช…' == ์กฐ๊ฑด)
    exam %>% filter ('์ปฌ๋Ÿผ๋ช…' %in% c(1,2,3,4))
  1. select : ์—ด ์ถ”์ถœ
    df %>% select('๋ณ€์ˆ˜๋ช…')
    'ํŠน์ • ๋ณ€์ˆ˜ ์ œ๊ฑฐํ•˜๊ณ  ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•'
    df %>% select(-'๋ณ€์ˆ˜๋ช…')
  1. arrange : ์ •๋ ฌ
    ์˜ค๋ฆ„์ฐจ์ˆœ์ธ ๊ฒฝ์šฐ : df %>% arrange('๋ณ€์ˆ˜๋ช…')
    ๋‚ด๋ฆผ์ฐจ์ˆœ์ธ ๊ฒฝ์šฐ : df %>% arrange(desc('๋ณ€์ˆ˜๋ช…'))
  1. mutate : ๋ณ€์ˆ˜(์—ด) ์ถ”๊ฐ€
    df %>% mutate(total = ifelse(score >= 60, 'pass', ifelse(score >= 40, 'fail', 'Not Yet'))) %>% head(10)
  1. summarise : ํ†ต๊ณ„์น˜ ์‚ฐ์ถœ
    df %>% summarise(mean_score = mean(score))
    df %>% group_by('๋ณ€์ˆ˜๋ช…') %>% summarise(mean_score = mean(score)) %>% head(5)
    ๋นˆ๋„์ˆ˜๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด?
    df %>% group_by('๋ณ€์ˆ˜๋ช…') %>% summarise(mean_score = mean(score), n = n()) %>% head(5)
  1. group_by : ์ง‘๋‹จ ๋ณ„๋กœ ๋‚˜๋ˆ„๊ธฐ
  2. left_join() : ๋ฐ์ดํ„ฐ ํ•ฉ์น˜๊ธฐ (์—ด)
  3. bind_rows() : ๋ฐ์ดํ„ฐ ํ•ฉ์น˜๊ธฐ (ํ–‰)

์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ ๊ฐ€๊ณตํ•˜๊ธฐ

< ์—ฐ์‚ฐ์ž >

์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์ถ”์ถœ
%>% (ํŒŒ์ดํ”„ ์—ฐ์‚ฐ์ž) : ๋‹จ์ถ•ํ‚ค ++
%in% (๋งค์น˜ ์—ฐ์‚ฐ์ž) : ์กฐ๊ฑด ๋ชฉ๋ก ์ž…๋ ฅ์„ ํ†ตํ•ด ์‚ฌ์šฉ
AND ์—ฐ์‚ฐ( & ) : ๋‘ ๊ฐœ์˜ ์กฐ๊ฑด์ด ๋ชจ๋‘ ์ฐธ์ธ ํ–‰์„ ์ถ”์ถœ
OR ์—ฐ์‚ฐ( | ) : ๋‘ ๊ฐœ์˜ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋งŒ ์ฐธ์ด๋ผ๋„ ์ถ”์ถœ
์ด๋ ‡๊ฒŒ ์ถ”์ถœํ•œ ๊ฐ’์€ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜์— ์ €์žฅ ๊ฐ€๋Šฅ

exam %>% filter(class %in% c(1, 3, 5))

์‹œ๊ฐํ™”

๋ฐ์ดํ„ฐ ๋ถ„์„ ํŒŒํŠธ์—์„œ ์ข‹์€ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์ด์ .
R์—์„œ๋Š” ๋›ฐ์–ด๋‚œ ๊ทธ๋ž˜ํ”„ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ๊ณผ ggplot2 ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ ๊ฐ€๋Šฅ!

์ž๋ฃŒ ์ข…๋ฅ˜
1. ๋ฒ”์ฃผํ˜• ์ž๋ฃŒ - ํ˜ˆ์•กํ˜•, ์„ฑ๋ณ„, ํ•™๊ณผ ๋“ฑ (categorical)
2. ์—ฐ์†ํ˜• ์ž๋ฃŒ - ๋ชธ๋ฌด๊ฒŒ, ํ‚ค, ๊ฐ•์ˆ˜๋Ÿ‰, ์ž๋ฃŒํ˜• (numerical)
3. ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜
3-1) ๋‹จ์ผ๋ณ€์ˆ˜ ์ž๋ฃŒ - ๋ฒกํ„ฐ์— ์ €์žฅ
3-2) ๋‹ค์ค‘๋ณ€์ˆ˜ ์ž๋ฃŒ - ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์— ์ฃผ๋กœ ์ €์žฅ

1. ๋ฒ”์ฃผํ˜• ์ž๋ฃŒ

uni.bloodtype <- c('A', 'B', 'A', 'O', 'AB', 'A', 'O', 'B', 'B', 'B')
uni.bloodtype
table(uni.bloodtype)
table(uni.bloodtype) / length(uni.bloodtype)

barplot(table(uni.bloodtype))
barplot(table(uni.bloodtype), main = 'Blood Type')
pie(table(uni.bloodtype), main = 'Blood Type')
colors <- c('red', 'yellow', 'blue', 'green')
barplot(table(uni.bloodtype), main = 'Blood Type', col = colors)

table(๋ณ€์ˆ˜๋ช…) : ํ•ด๋‹น ๋ฒกํ„ฐ์— ์กด์žฌํ•˜๋Š” uniqueํ•œ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ ํ‘œ๋กœ ์ถœ๋ ฅ
barplot() : ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ํ˜•์„ฑ
pie() : ์›ํ˜•๊ทธ๋ž˜ํ”„ ํ˜•์„ฑ
main='๊ทธ๋ž˜ํ”„ ์ œ๋ชฉ', col = 'colors'๋กœ ์ƒ‰๊น” ์ง€์ •๋„ ๊ฐ€๋Šฅ!

2. ์—ฐ์†ํ˜• ์ž๋ฃŒ

weight <- c( 75, 72, 60, 65, 67, 70, 72, 63, 60, 64)
weight1 <- c(weight, 250)
weight
weight1
mean(weight)
median(weight)
mean(weight1)
median(weight1)
mean(weight, trim= 0.1)
mean(weight1, trim= 0.1)

๋ถ„ํฌ๋„(distribution ํ™•์ธ)
data <- c( 100, 50, 55, 75, 60, 80, 6, 88, 92, 82)

๋ถ„์‚ฐ : var(data)
ํ‘œ์ค€ํŽธ์ฐจ : sd(data)
๋ฒ”์œ„ : range(data)
max, min ๊ฐ„์˜ ์ฐจ์ด : diff(range(data)

4๋ถ„์œ„์ˆ˜ (quantile)
data <- c( 100, 50, 55, 75, 60, 80, 6, 88, 92, 82)
quantile(data)
# ์›ํ•˜๋Š” % ๋งŒํผ์˜ ๋ถ„ํฌ ํ™•์ธ๋„ ๊ฐ€๋Šฅ!
quantile(data, (0:10)/10)
# min, max ํฌํ•จํ•œ ์‚ฌ๋ถ„์œ„์ˆ˜ ์ถœ๋ ฅ
summary(data)

์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ์˜ ์ด์ƒ์น˜๊ฐ€ ๋งŽ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ ํ‰๊ท ๋ณด๋‹ค ์ค‘์•™๊ฐ’์„ ๋งŽ์ด ์‚ฌ์šฉ
trim = % ํ•จ์ˆ˜ : ์ƒํ•˜์œ„ ๊ฐ’ %๋งŒํผ ์‚ญ์ œ ํ›„ ๊ฐ’ ๊ณ„์‚ฐ

ํŽธํ–ฅ

2-1 ์—ฐ์†ํ˜• ์ฐจํŠธ

# ์ƒˆ๋กœ์šด ์Šคํฌ๋ฆฝํŠธ ์—ด์–ด์„œ ํ™•์ธ ๊ฐ€๋Šฅ
View(cars)
# ํ–‰, ์—ด ์ถœ๋ ฅ
dim(cars)
summary(cars)
# ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ ์ •๋ณด ์ถœ๋ ฅ
help(cars)
# cars ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์˜ 2๋ฒˆ์งธ ์—ด๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ
data <- cars[,2]
hist(data)
hist(data, main = "์ž๋™์ฐจ ์ œ๋™ ๊ฑฐ๋ฆฌ", xlab = "์ œ๋™๊ฑฐ๋ฆฌ", ylab = "๋นˆ๋„์ˆ˜",
border="red", col = "yellow", las = 2, breaks = 5

ํžˆ์Šคํ† ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„์™€ ์œ ์‚ฌํ•œ ํ˜•ํƒœ, ์—ฐ์†ํ˜• ๋ฐ์ดํ„ฐ ๋ถ„ํฌ๋ฅผ ์‹œ๊ฐํ™” ์‹œ ์‚ฌ์šฉ
๊ตฌ๊ฐ„์„ ๋‚˜๋ˆ„๊ณ , ๊ตฌ๊ฐ„์— ์†ํ•œ ์ž๋ฃŒ์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ์–ด์„œ ํ‘œํ˜„!!

๋‹ค์ค‘๋ณ€์ˆ˜ ์‹œ๊ฐํ™”

  • ์‚ฐ์ ๋„
    ๋ณ€์ˆ˜๊ฐ€ 2๊ฐœ ์ด์ƒ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ž๋ฃŒ ๋ถ„ํฌ ํ™•์ธ, ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„ ํŒŒ์•…!
plot(wt, mpg, main = '๋ฌด๊ฒŒ์™€ ์—ฐ๋น„์˜ ๊ด€๊ณ„', xlab = '๋ฌด๊ฒŒ', 'ylab' = '์—ฐ๋น„', col = 'blue', pch = 21)

# ๋‹ค์ค‘ ์‚ฐ์ ๋„
vars <- c('mpg', 'disp', 'drat', 'wt')
multi_var <- mtcars[,vars]
pairs(multi_var, main = 'Multi scatter')

์ƒ๊ด€ ๋ถ„์„

์ƒ๊ด€ ๋ถ„์„ - ๊ด€์ธก๊ฐ’๋“ค์˜ ๋ถ„ํฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋” ๊ฐ•ํ•œ ์„ ํ˜•์ธ ๊ด€๊ณ„์— ์žˆ๋Š”์ง€ ์ˆ˜์น˜์ƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•
์ƒ๊ด€ ๊ณ„์ˆ˜ - ์„ ํ˜•์„ฑ์˜ ์ •๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฒ™๋„

data.a <- c(5,2,9,8,3,7,3,5,3,5)
data.b <- c(1, 0.3, 1.9, 1.2, 0.4, 0.095, 0.7, 0.6, 0.2, 0.5)
tbl <- data.frame(data.a, data.b)
tbl
plot(tbl)
plot(data.b~data.a)
plot(data.b~data.a, data=tbl)
๊ทธ๋ž˜ํ”„์—์„œ ์ ˆํŽธ ๊ฐ’๋“ค ์•Œ ์ˆ˜ ์žˆ์Œ
lm(data.b~data.a, data=tbl)
res <- lm(data.b~data.a, data=tbl)
# ์•ž์„œ ๊ทธ๋ฆฐ ๊ทธ๋ž˜ํ”„์— ์„  ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ
abline(res)
# ๋‘ ๋ณ€์ˆ˜ ๊ฐ„ ์„ ํ˜•์„ฑ (์ƒ๊ด€๊ณ„์ˆ˜ ๊ฐ’ ํ™•์ธ)
cor(data.a, data.b)
### ์„ ๊ทธ๋ž˜ํ”„
month = 1:12
rain <- c(10, 15, 30, 25, 40, 50, 120, 100, 30, 10, 20, 30)
plot(month, rain, main= '๊ฐ•์ˆ˜๋Ÿ‰ ํ†ต๊ณ„', type = 'l', lty = 1, lwd = 1, 
     xlab = '์›”๋ณ„', 'ylab' = '๊ฐ•์ˆ˜๋Ÿ‰')
### ์—ฌ๋Ÿฌ๊ฐœ์˜ ์„ ๊ทธ๋ž˜ํ”„
rain1 = c(23, 8, 15, 40, 55, 60, 125, 120, 40,30,40,20)
lines(month, rain1, type = 'b', col = 'blue')

plot ์œผ๋กœ ๋จผ์ € ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฐ ํ›„, lines()๋กœ ์„  ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ํ•˜๊ธฐ!!

boxplot()

4๋ถ„์œ„์ˆ˜, ์ด์ƒ์น˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐํ™” ๊ทธ๋ž˜ํ”„ ํ•จ์ˆ˜

์›ํ•˜๋Š” ๊ฐœ์ˆ˜๋งŒํผ ํ•œ ํ™”๋ฉด์— ์—ฌ๋Ÿฌ ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑํ•˜๊ธฐ

๊ทธ๋ž˜ํ”„ 2ํ–‰ 3์—ด๋กœ ๋งŒ๋“ค๊ธฐ
par(mfrow = c(2,3))
์‚ฐ์ ๋„
plot(df$weight, df$height)
plot(df$age, df$height)
๋ง‰๋Œ€๊ทธ๋ž˜ํ”„
barplot(table(df$bloodtype))
4๋ถ„์œ„์ˆ˜, ์ด์ƒ์น˜ ๋‚˜์˜ค๋„๋ก ํ•˜๋Š” boxplot
boxplot(df$height)
boxplot(df$height ~ df$bloodtype)
ํžˆ์Šคํ† ๊ทธ๋žจ
hist(df$height, breaks=10)
par(mfrow = c(1,1)) ์› ์ƒํƒœ๋กœ ๋ณต๊ท€
        
# enterํ‚ค ์น˜๋ฉด์„œ ๋„˜๊ธฐ๋ฉด์„œ ์‹œ๊ฐํ™” ํ™•์ธ
plot(df$weight ~ df$height + df$age + df$grade + df$absence)
profile
To be a DataScientist

0๊ฐœ์˜ ๋Œ“๊ธ€