#dplyr 패키지의 left_join() 및 bind_rows()를 사용해서 열 및 행 합치기
library(dplyr)
#특정 컬럼을 기준으로 열 합치기
#left_join()을 사용해서 class컬럼을 기준으로 데이터 합치기
#아래 테이블을 class를 기준으로 합쳐보자
> math_test_total class midterm final 1 1 88 78 2 2 75 85 3 3 78 68 4 4 77 79 5 5 96 86 |
> class_name class name 1 1 햇님반 2 2 달님반 3 3 별님반 4 4 꽃님반 5 5 풀님반 |
> math_test class midterm final name 1 1 88 78 햇님반 2 2 75 85 달님반 3 3 78 68 별님반 4 4 77 79 꽃님반 5 5 96 86 풀님반 |
> #반별 중간고사 수학 평균 점수 > math_test_midterm <- data.frame (class = c(1,2,3,4,5), + midterm = c(88, 75, 78, 77, 96)) > #반별 기말고사 수학 평균 점수 > math_test_final <- data.frame (class = c(1,2,3,4,5), + midterm = c(78, 85, 68, 79, 86)) > #left_join()을 사용해서 class컬럼을 기준으로 데이터 합치기 > math_test_total <- left_join(math_test_midterm,math_test_final,by="class") > math_test_total class midterm.x midterm.y 1 1 88 78 2 2 75 85 3 3 78 68 4 4 77 79 5 5 96 86 |
#dplyr 패키지의 bind_rows()함수를 통해 열 합치기
#bind_rows(테이블A, 테이블 B) 를 입력해서 열을 추가할 수 있다.
#dplyr의 bind_rows()를 이용해 데이터 세로로 합치기
#데이터 세로로 합치기
#1~2반의 시험 데이터 test1 <- data.frame (class = c (1,2), test = c(60,80)) > test1 class test 1 1 60 2 2 80
|
#3~5반의 시험데이터 test2 <- data.frame (class = c(3,4,5), test = c(95,80,20)) > test2 class test 1 3 95 2 4 80 3 5 20 |
#bind_rows()를 이용해 데이터 세로로 합치기
test_all <- bind_rows(test1,test2)
#자동으로 동일한 컬럼 name끼리 합쳐진다. class test 1 1 60 2 2 80 3 3 95 4 4 80 5 5 20 |
#만약 컬럼 이름이 다를 경우에는 다음과 같이 된다.
#class와 test가 아니라 id와 midterm을 가지는 테이블 추가 midterm = c(30,40)) > test3 id midterm 1 6 30 2 7 40 |
#위의 세개 테이블을 합치면 같은 컬럼끼리만 합치고, 값이 없는 컬럼은 NA로 표시된다.
test_all2 <- bind_rows(test1,test2, test3)
>test_all2 class test id midterm 1 1 60 NA NA 2 2 80 NA NA 3 3 95 NA NA 4 4 80 NA NA 5 5 20 NA NA 6 NA NA 6 30 7 NA NA 7 40 |
#컬럼 이름이 다를 경우 이름을 바꿔서 합치자.
#컬럼 이름 변경은 아래 링크 참고
http://realab.tistory.com/8
'데이터분석 > R' 카테고리의 다른 글
[R 프로그래밍] 데이터 가공 - distinct() 함수로 유니크한 값 추출하기 (dplyr) (0) | 2018.09.01 |
---|---|
[R 프로그래밍] 데이터 프레임 생성 시 stringsAsFactors 옵션 사용하기 (0) | 2018.09.01 |
[R 프로그래밍] 데이터 가공 - 그룹 별로 나눠서 요약 정보 보기 group_by(), summarise() (dplyr) (0) | 2018.08.26 |
[R 프로그래밍] 데이터 가공 - 컬럼 추가하기 : mutate() (dplyr) (0) | 2018.08.24 |
[R 프로그래밍] 데이터 가공 - arrange()로 정렬하기 (dplyr) (0) | 2018.08.24 |