성적표 정형화 작업


id <- c(1:10)
class <- c(1,1,1,1,1,2,2,2,2,2)
math <- c(50,60,45,30,23,50,30,25,50,50)
english <- c(98,97,86,98,80,89,30,25,50,50)
science <- c(50,60,78,58,65,98,30,25,50,50)

df.score <- data.frame(id,class,math,english,science)
#전체 학생 점수 보기
df.score
# n번째 row 까지만 보여주기 head(df.n) 함수 p.101
head(df.score, 8)

# 밑에서 n번째 row 까지만 보여주기 tail(df.n) 함수 p.102
tail(df.score, 8)

# 뷰어창에서 df 확인 View(df) *View의 V는 대문자
View(df.score)

# df , row count, col count // 디멘션은 쓰지 말고 보통 스트럭쳐 씀
dim(df.score)

# str() structure 를 나타내는 함수
str(df.score)

# summary() 요약
summary(df.score)


# df.score <- difly::rename( df.score, id=uid)    

#df.score %>%  #파이프라인
#  data.table::setnames(

#  )
library(dplyr)

df.score %>% 
  data.table::setnames(
    old = "id",
    new = "아이디"
  )
df.score
df.score$총점 <- df.score$math + df.score$english + df.score$science
df.score$평균 <- df.score$총점 / 3
df.score

hist(df.score$총점) #p.116

#ifelse()

df.score$합격여부 <- ifelse(df.score$평균>=50, "합격", "불합격")

df.score$등급 <- ifelse(df.score$평균>=50,
                      "A",
                      ifelse(df.score$평균>=30,
                             "B",
                             "C"))


# table()
library(ggplot2)
ggplot2::qplot(df.score$합격여부)
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQrshLHsoIHtkZwg7KCV7ZiV7ZmUIOyekeyXhQ0KDQpgYGB7cn0NCg0KaWQgPC0gYygxOjEwKQ0KY2xhc3MgPC0gYygxLDEsMSwxLDEsMiwyLDIsMiwyKQ0KbWF0aCA8LSBjKDUwLDYwLDQ1LDMwLDIzLDUwLDMwLDI1LDUwLDUwKQ0KZW5nbGlzaCA8LSBjKDk4LDk3LDg2LDk4LDgwLDg5LDMwLDI1LDUwLDUwKQ0Kc2NpZW5jZSA8LSBjKDUwLDYwLDc4LDU4LDY1LDk4LDMwLDI1LDUwLDUwKQ0KDQpkZi5zY29yZSA8LSBkYXRhLmZyYW1lKGlkLGNsYXNzLG1hdGgsZW5nbGlzaCxzY2llbmNlKQ0KI+yghOyytCDtlZnsg50g7KCQ7IiYIOuztOq4sA0KZGYuc2NvcmUNCiMgbuuyiOynuCByb3cg6rmM7KeA66eMIOuztOyXrOyjvOq4sCBoZWFkKGRmLm4pIO2VqOyImCBwLjEwMQ0KaGVhZChkZi5zY29yZSwgOCkNCg0KIyDrsJHsl5DshJwgbuuyiOynuCByb3cg6rmM7KeA66eMIOuztOyXrOyjvOq4sCB0YWlsKGRmLm4pIO2VqOyImCBwLjEwMg0KdGFpbChkZi5zY29yZSwgOCkNCg0KIyDrt7DslrTssL3sl5DshJwgZGYg7ZmV7J24IFZpZXcoZGYpICpWaWV37J2YIFbripQg64yA66y47J6QDQpWaWV3KGRmLnNjb3JlKQ0KDQojIGRmICwgcm93IGNvdW50LCBjb2wgY291bnQgLy8g65SU66mY7IWY7J2AIOyTsOyngCDrp5Dqs6Ag67O07Ya1IOyKpO2KuOufreyzkCDslIANCmRpbShkZi5zY29yZSkNCg0KIyBzdHIoKSBzdHJ1Y3R1cmUg66W8IOuCmO2DgOuCtOuKlCDtlajsiJgNCnN0cihkZi5zY29yZSkNCg0KIyBzdW1tYXJ5KCkg7JqU7JW9DQpzdW1tYXJ5KGRmLnNjb3JlKQ0KDQoNCiMgZGYuc2NvcmUgPC0gZGlmbHk6OnJlbmFtZSggZGYuc2NvcmUsIGlkPXVpZCkgICAgDQoNCiNkZi5zY29yZSAlPiUgICPtjIzsnbTtlITrnbzsnbgNCiMgIGRhdGEudGFibGU6OnNldG5hbWVzKA0KDQojICApDQpsaWJyYXJ5KGRwbHlyKQ0KDQpkZi5zY29yZSAlPiUgDQogIGRhdGEudGFibGU6OnNldG5hbWVzKA0KICAgIG9sZCA9ICJpZCIsDQogICAgbmV3ID0gIuyVhOydtOuUlCINCiAgKQ0KZGYuc2NvcmUNCmRmLnNjb3JlJOy0neygkCA8LSBkZi5zY29yZSRtYXRoICsgZGYuc2NvcmUkZW5nbGlzaCArIGRmLnNjb3JlJHNjaWVuY2UNCmRmLnNjb3JlJO2Pieq3oCA8LSBkZi5zY29yZSTstJ3soJAgLyAzDQpkZi5zY29yZQ0KDQpoaXN0KGRmLnNjb3JlJOy0neygkCkgI3AuMTE2DQoNCiNpZmVsc2UoKQ0KDQpkZi5zY29yZSTtlanqsqnsl6zrtoAgPC0gaWZlbHNlKGRmLnNjb3JlJO2Pieq3oD49NTAsICLtlanqsqkiLCAi67aI7ZWp6rKpIikNCg0KZGYuc2NvcmUk65Ox6riJIDwtIGlmZWxzZShkZi5zY29yZSTtj4nqt6A+PTUwLA0KICAgICAgICAgICAgICAgICAgICAgICJBIiwNCiAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZGYuc2NvcmUk7Y+J6regPj0zMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQyIpKQ0KDQoNCiMgdGFibGUoKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KZ2dwbG90Mjo6cXBsb3QoZGYuc2NvcmUk7ZWp6rKp7Jes67aAKQ0KDQoNCg0KDQpgYGANCg0KDQo=