경기도 인공지능 개발 과정/R

R 패키지 ggplot2, dplyr

agingcurve 2022. 4. 17. 15:33
반응형

library(ggplot2)
mpg <- as.data.frame(ggplot2::mpg)

library(dplyr)
exam <- read.csv("./data_files/csv_exam.csv")

# 데이터프레임 : 데이터 합하기
# 가로 : 변수 추가 형태
# 세로 : 데이터 추가 형태

# 샘플 데이터 
# 중간고사 데이터 생성
test1 <- data.frame(id = c(1,2,3,4,5),
                    midterm = c(60, 80, 70, 90, 85)
                    )

# 기말고사 데이터 생성
test2 <- data.frame(id = c(1,2,3,4,5),
                    final = c(70, 83, 65, 95, 80)
)

### 가로 : 변수 추가 형태 => dplyr 패키지 left_join(데이터프레임, 데이터프레임, by =  "기준 변수")
# by =  "기준 변수" 는 두 가지 데이터프레임의 공통 변수를 사용
total <- left_join(test1, test2, by="id")

# 다른 데이터를 활용하여 변수 추가 : left_join() 로 가능.
# 즉, 특정 변수의 값을 기준으로 다른 데이터의 값을 추가 가능.

# 반별 담임 선생님 명단 데이터 생성
name <- data.frame(class = c(1,2,3,4,5),
                   teacher = c("kim", "lee", "park", "choi", "jung")
                   )

exam_name <- left_join(exam, name, by="class")

# left_join() : 기준 변수는 두개의 데이터프레임에 동일하게 존재하는 변수를 지정.
#             : 기준 변수의 데이터 갯수가 동일..


### 세로 : 데이터 추가 형태 => dplyr 패키지 bind_rows(데이터프레임, 데이터프레임)
# 시험기간 : 응시 / 미응시 (추가 시험)  또는 입시(입사)관리 추가 합격자 데이터 추가 시에도 사용

# 학생 1~5 번의 시험 데이터 생성
group_a <- data.frame(id=c(1,2,3,4,5),
                      test=c(60,80,70,90,85)
                      )

# 학생 6~10 번의 시험 데이터 생성
group_b <- data.frame(id=c(6,7,8,9,10),
                      test=c(670,83,65,95,80)
)
group_all <- bind_rows(group_a, group_b)


# 만약 두 개의 데이터프레임 내의 변수명이 다를 경우

group_c <- data.frame(id=c(6,7,8,9,10),
                      test1=c(670,83,65,95,80)
)

group_d <- data.frame(id=c(6,7,8,9,10),
                      test2=c(670,83,65,95,80)
)

group_all2 <- bind_rows(group_c, group_d)
# left_join() 처럼 합쳐진다.. 
# 단, 해당 값이 없는 변수에는 NA 갓이 자동 설정되어 추후 연산 시 오루를 발생하게 된다.

# 따라서 변수명일 다를 경우에는 rename()를 이용하여 먼저  변수명을 통일한 후, 합쳐야 한다!!!!
group_c <- rename(group_c, test = test1)
group_d <- rename(group_d, test = test2)
group_all2 <- bind_rows(group_c, group_d)