1.1 mpg자료를 csv파일로 자신의 working directory에 저장하기

library(ggplot2)
head(mpg)
getwd()
[1] "/cloud/project/statprogramming"
setwd("/cloud/project/statprogramming")
write.csv(mpg, "mpg.csv", row.names = F)

1.2 저장한 파일 불러들이기

자료를 불러오고, 잘 불러졌는지 head를 이용해서 확인해보자.

mpg <- read.csv("mpg.csv")
head(mpg)
NA

1.3 자료의 구조 확인하기

  • 총 234개의 관측치가 있으며,
  • 총 11개의 변수가 불러들여졌다.
  • 이중 범주형자료는 6개
  • 나머지는 연속형 자료이다.
str(mpg)
'data.frame':   234 obs. of  14 variables:
 $ manufacturer: Factor w/ 15 levels "audi","chevrolet",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ model       : Factor w/ 38 levels "4runner 4wd",..: 2 2 2 2 2 2 2 3 3 3 ...
 $ displ       : num  1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
 $ year        : int  1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
 $ cyl         : int  4 4 4 4 6 6 6 4 4 4 ...
 $ trans       : Factor w/ 10 levels "auto(av)","auto(l3)",..: 4 9 10 1 4 9 1 9 4 10 ...
 $ drv         : Factor w/ 3 levels "4","f","r": 2 2 2 2 2 2 2 1 1 1 ...
 $ cty         : int  18 21 20 21 16 18 18 18 16 20 ...
 $ hwy         : int  29 29 31 30 26 26 27 26 25 28 ...
 $ fl          : Factor w/ 5 levels "c","d","e","p",..: 4 4 4 4 4 4 4 4 4 4 ...
 $ class       : Factor w/ 7 levels "2seater","compact",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ total       : int  47 50 51 51 42 44 45 44 41 48 ...
 $ grade       : Factor w/ 3 levels "A","B","C": 1 1 1 1 1 1 1 1 1 1 ...
 $ test        : Factor w/ 1 level "pass": 1 1 1 1 1 1 1 1 1 1 ...

1.4 cty 와 hwy을 합하여 새로운 변수 total 생성하기

mpg데이터를 반복적으로 사용할 예정이므로, attach를 이용하여 데이터에 빠르게 접근하도록 하자.

attach(mpg)
The following object is masked _by_ .GlobalEnv:

    test

The following objects are masked from mpg (pos = 3):

    class, cty, cyl, displ, drv, fl, grade, hwy, manufacturer, model,
    test, total, trans, year

The following objects are masked from mpg (pos = 4):

    class, cty, cyl, displ, drv, fl, grade, hwy, manufacturer, model,
    total, trans, year

The following objects are masked from mpg (pos = 5):

    class, cty, cyl, displ, drv, fl, grade, hwy, manufacturer, model,
    total, trans, year

The following objects are masked from mpg (pos = 6):

    class, cty, cyl, displ, drv, fl, hwy, manufacturer, model, total,
    trans, year

The following objects are masked from mpg (pos = 7):

    class, cty, cyl, displ, drv, fl, hwy, manufacturer, model, trans,
    year
mpg$total<- cty+hwy
head(mpg[,c("cty","hwy","total")])

1.5 total 변수의 평균구하기

평균은 40이다.

mean(total)
[1] 40.29915

1.6 조건에 따라 성취도(good/normal) 분류하기

if(mean(total)>=20) {
  cat("good")
} else {
  cat("normal")
}
good

1.7 조건에 따라 pass여부 분류하기

test <- ifelse(mean(test)>=20, "pass","fail")
argument is not numeric or logical: returning NA
test <- factor(test, levels=c("pass","fail"))

table(test)
test
pass fail 
   0    0 

1.8 조건에 따라 grade(A,B,C,D) 산정하기

A를 받은 사람이 204명, B를 받은 사람은 25명, C를 받은 사람은 5명 나온다.

mpg$grade <- ifelse(mpg$total>=30, "A", 
                    ifelse(mpg$total>=25, "B",
                           ifelse(mpg$total>=20,"C", "D")))
mpg$grade <- factor(mpg$grade, levels=c("A","B","C","D"))
table(mpg$grade)

  A   B   C   D 
204  25   5   0 

1.9 생성된 변수를 새로운 데이터프레임에 저장하기

mpg_data <- data.frame(total, 
                       test, 
                       grade=mpg$grade)
head(mpg_data)
str(mpg_data)
'data.frame':   234 obs. of  3 variables:
 $ total: int  47 50 51 51 42 44 45 44 41 48 ...
 $ test : Factor w/ 2 levels "pass","fail": NA NA NA NA NA NA NA NA NA NA ...
 $ grade: Factor w/ 4 levels "A","B","C","D": 1 1 1 1 1 1 1 1 1 1 ...
write.table(mpg_data, "mpg_data.csv", row.names = F)




2. 함수를 조건문을 이용해 정의하기

psy <- function(x){
abs <- ifelse(x>=0, x, -x) #절대값 구하기
ifelse (abs<=1 , abs^2, 2*abs-1) # 조건에 따라 함수 값 출력하기 
}
psy(x)
[1] 0




3. factorial값 출력하기

LS0tCnRpdGxlOiAi7Ya16rOE7ZSE66Gc6re4656Y67CNIEhXIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogeWVzCi0tLQoKYGBge3IgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGNvbW1lbnQgPSAiIiAsIHByb21wdCA9IFRSVUUsIG91dC53aWR0aCA9IDUwMCwgZmlnLmhlaWdodCA9IDUsIGZpZy53aWR0aCA9IDUpCmBgYAoKCiMjIDEuMSBtcGfsnpDro4zrpbwgY3N27YyM7J2866GcIOyekOyLoOydmCB3b3JraW5nIGRpcmVjdG9yeeyXkCDsoIDsnqXtlZjquLAgCmBgYHtyfQpsaWJyYXJ5KGdncGxvdDIpCmhlYWQobXBnKQpnZXR3ZCgpCnNldHdkKCIvY2xvdWQvcHJvamVjdC9zdGF0cHJvZ3JhbW1pbmciKQp3cml0ZS5jc3YobXBnLCAibXBnLmNzdiIsIHJvdy5uYW1lcyA9IEYpCgpgYGAKCiMjIDEuMiDsoIDsnqXtlZwg7YyM7J28IOu2iOufrOuTpOydtOq4sCAK7J6Q66OM66W8IOu2iOufrOyYpOqzoCwg7J6YIOu2iOufrOyhjOuKlOyngCBgaGVhZGDrpbwg7J207Jqp7ZW07IScIO2ZleyduO2VtOuztOyekC4gCmBgYHtyfQptcGcgPC0gcmVhZC5jc3YoIm1wZy5jc3YiKQpoZWFkKG1wZykKCmBgYAoKIyMgMS4zIOyekOujjOydmCDqtazsobAg7ZmV7J247ZWY6riwIAotIOy0nSAyMzTqsJzsnZgg6rSA7Lih7LmY6rCAIOyeiOycvOupsCwgCi0g7LSdIDEx6rCc7J2YIOuzgOyImOqwgCDrtojrn6zrk6Tsl6zsoYzri6QuIAotIOydtOykkSDrspTso7ztmJXsnpDro4zripQgNuqwnAotIOuCmOuouOyngOuKlCDsl7Dsho3tmJUg7J6Q66OM7J2064ukLiAKYGBge3J9CnN0cihtcGcpCmBgYAoKIyMgMS40IGN0eSDsmYAgaHd57J2EIO2Vqe2VmOyXrCDsg4jroZzsmrQg67OA7IiYIHRvdGFsIOyDneyEse2VmOq4sCAKbXBn642w7J207YSw66W8IOuwmOuzteyggeycvOuhnCDsgqzsmqntlaAg7JiI7KCV7J2066+A66GcLCBgYXR0YWNoYOulvCDsnbTsmqntlZjsl6wg642w7J207YSw7JeQIOu5oOultOqyjCDsoJHqt7ztlZjrj4TroZ0g7ZWY7J6QLiAgCmBgYHtyfQphdHRhY2gobXBnKQptcGckdG90YWw8LSBjdHkraHd5CmhlYWQobXBnWyxjKCJjdHkiLCJod3kiLCJ0b3RhbCIpXSkKYGBgCgojIyAxLjUgdG90YWwg67OA7IiY7J2YIO2Pieq3oOq1rO2VmOq4sCAK7Y+J6reg7J2AIDQw7J2064ukLiAKYGBge3J9Cm1lYW4odG90YWwpCmBgYAoKIyMgMS42IOyhsOqxtOyXkCDrlLDrnbwg7ISx7Leo64+EKGdvb2Qvbm9ybWFsKSDrtoTrpZjtlZjquLAgCmBgYHtyfQppZihtZWFuKHRvdGFsKT49MjApIHsKICBjYXQoImdvb2QiKQp9IGVsc2UgewogIGNhdCgibm9ybWFsIikKfQpgYGAKCiMjIDEuNyDsobDqsbTsl5Ag65Sw6528IHBhc3Psl6zrtoAg67aE66WY7ZWY6riwIAoKYGBge3J9CnRlc3QgPC0gaWZlbHNlKG1lYW4odGVzdCk+PTIwLCAicGFzcyIsImZhaWwiKQp0ZXN0IDwtIGZhY3Rvcih0ZXN0LCBsZXZlbHM9YygicGFzcyIsImZhaWwiKSkKCnRhYmxlKHRlc3QpCmBgYAoKIyMgMS44IOyhsOqxtOyXkCDrlLDrnbwgZ3JhZGUoQSxCLEMsRCkg7IKw7KCV7ZWY6riwIApB66W8IOuwm+ydgCDsgqzrnozsnbQgMjA066qFLCBC66W8IOuwm+ydgCDsgqzrnozsnYAgMjXrqoUsIEPrpbwg67Cb7J2AIOyCrOuejOydgCA166qFIOuCmOyYqOuLpC4gCmBgYHtyfQptcGckZ3JhZGUgPC0gaWZlbHNlKG1wZyR0b3RhbD49MzAsICJBIiwgCiAgICAgICAgICAgICAgICAgICAgaWZlbHNlKG1wZyR0b3RhbD49MjUsICJCIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKG1wZyR0b3RhbD49MjAsIkMiLCAiRCIpKSkKbXBnJGdyYWRlIDwtIGZhY3RvcihtcGckZ3JhZGUsIGxldmVscz1jKCJBIiwiQiIsIkMiLCJEIikpCnRhYmxlKG1wZyRncmFkZSkKYGBgCgojIyAxLjkg7IOd7ISx65CcIOuzgOyImOulvCDsg4jroZzsmrQg642w7J207YSw7ZSE66CI7J6E7JeQIOyggOyepe2VmOq4sApgYGB7cn0KbXBnX2RhdGEgPC0gZGF0YS5mcmFtZSh0b3RhbCwgCiAgICAgICAgICAgICAgICAgICAgICAgdGVzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgZ3JhZGU9bXBnJGdyYWRlKQpoZWFkKG1wZ19kYXRhKQpzdHIobXBnX2RhdGEpCndyaXRlLnRhYmxlKG1wZ19kYXRhLCAibXBnX2RhdGEuY3N2Iiwgcm93Lm5hbWVzID0gRikKYGBgCgo8YnIvPgoKKioqIAoKPGJyLz4KCiMjIDIuIO2VqOyImOulvCDsobDqsbTrrLjsnYQg7J207Jqp7ZW0ICDsoJXsnZjtlZjquLAgCmBgYHtyfQpwc3kgPC0gZnVuY3Rpb24oeCl7CmFicyA8LSBpZmVsc2UoeD49MCwgeCwgLXgpICPsoIjrjIDqsJIg6rWs7ZWY6riwCmlmZWxzZSAoYWJzPD0xICwgYWJzXjIsIDIqYWJzLTEpICMg7KGw6rG07JeQIOuUsOudvCDtlajsiJgg6rCSIOy2nOugpe2VmOq4sCAKfQpwc3koeCkKYGBgCgo8YnIvPgoKKioqIAoKPGJyLz4KCiMjIDMuIGZhY3RvcmlhbOqwkiDstpzroKXtlZjquLAgCmBgYHtyfQoKYGBgCgo=