일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 자바
- DTO사용이유
- str()
- summary()
- programmers
- Spring
- RProgramming
- 한글깨지는문제
- r
- git오류
- LIKE검색
- 알고리즘
- Eclipse
- cor()
- querydsl적용하기
- 머신러닝
- git
- R명령어
- 머신러닝프로세스
- core.autocrlf
- Q타입클래스
- JPA
- Rstudio
- 프로그래머스
- java
- 이클립스
- R프로그래밍
- queryDSL
- stepfilter
- 이중배열
- Today
- Total
놀고 싶어요
[R Programming] 데이터 결합 본문
주요 테이블 결합: Join type 과 keys
key
두 테이블 간의 공통으로 존재해서 연결고리 역할을 하는 컬럼이다.
어떤 기준으로 두 테이블을 결합할 건지 정의 한 것. 하나 혹은 복수의 공통 컬럼 지정이 가능하다.
join type
output table에 값을 채워 넣는 방법이다.
dplyr 패키지의 join type 종류 - 각 함수의 이름이 된다.
- left_join: 왼쪽 테이블에 있는 데이터 기준으로 오른쪽 데이터를 가져오는 방식
- right_join: 오른쪽 테이블에 있는 데이터 기준으로 왼쪽 데이터를 가져오는 방식
- full_join (합집합)
- inner_join (교집합)
- semi_join: 공통 key가 있는 경우 왼쪽 테이블 값만 가져오는 방식
- anti_join: 왼쪽 테이블 key 값 중 오른쪽 테이블에 없는 경우만 가져 오는 방식
semi_join과 anti_join 둘 다 왼쪽 테이블을 오른쪽 테이블 내의 key값 유무 기준에 따라 필터링한다고 볼 수 있다.
둘 다 tibble, data.frame 이거나 하나만 data.frame이어도 join 함수 사용에 지장이 없다.
결과 창의 표현과 결과물의 class만 다르고 결과 자체는 동일하다.
bike_data의 station_no_out과 stations의 ID는 key 값이 된다.
bike_data2 <- inner_join(bike_data, stations, by = c("Station_no_out" = "ID"))
변수명 <- 조인 함수 (결합대상 데이터 파일a, 결합대상 데이터 파일b, by = c(“왼쪽키” = “오른쪽키”))
join 함수에는 결합할 방식에 따른 함수, 결합할 두 데이터 이름, by로 표시하는 결합 기준이 필요하다.a를 left, b를 right 라고 지칭한다.
left_join인 경우, 첫 번째 인자인 left table 기준으로 조회하는 걸 의미한다.
by라고 지정되어 있는 key값을 기준으로 교집합에 해당하는 결합 데이터를 만들어 준다.
만약 두 컬럼이 같은 이름 'ID'로 들어가 있다면 by = "ID" 로 써도 된다.
36,586 행과 23개 컬럼으로 구성된 데이터가 만들어진다.
구 정보가 추가되어 구 별로 구분이 가능해졌다.
tb1 <- tibble(a=c('a','b','c'), b=c(1, 2, 3))
tb2 <- tibble(a=c(‘a’,’b’,’d’), c=c('가','나', '다'))
a컬럼이 같은 성격이므로 key로 사용 가능하다.
- Inner join
inner_join(tb1, tb2, by='a')
양쪽에 a가 있어 두 테이블이 그대로 합쳐진 형태로 나타난다.
- Full join
full_join(tb1, tb2, by='a')
두 테이블의 모든 행과 컬럼을 합해서 보여준다. 비어 있는 셀은 NA로 표현된다.
- left join
left_join(tb1, tb2, by='a')
왼쪽 테이블을 기준으로 두고 오른쪽 테이블의 내용을 결합.
동일한 a 컬럼이 있는 경우 오른쪽 테이블의 추가 컬럼을 넣어줌
동일한 값이 없는 경우 NA로 나타남
- Right join
right_join(tb1, tb2, by='a')
오른쪽 테이블을 기준으로 두고 왼쪽 테이블의 내용을 결합.
key값에 해당하는 값이 왼쪽 테이블에 없음 - NA로 나타남
- Semi join
semi_join(tb1, tb2, by='a')
공통 key가 있는 경우 왼쪽 테이블 값만 가져오는 방식.
오른 쪽 테이블에 c가 없어 양쪽 공통으로 있는 a, b만 표시된다.
- Anti join
anti_join(tb1, tb2, by='a')
왼쪽 테이블을 기준으로 두고 오른쪽 테이블에 없는 경우만 가져오는 방식
오른쪽 테이블에 없는 c만 나타난다.
'R' 카테고리의 다른 글
[R Programming] 데이터 분석 / 데이터 전처리 - pivot_table, gather, spread (0) | 2021.05.12 |
---|---|
[R Programming] ggplot2를 이용한 기본 그래프 그리기 - 파이차트, 막대그래프, 히스토그램, Box Plot, 선 그래프 (0) | 2021.05.12 |
[R Programming] 데이터 전처리 / 결측값 및 이상값 처리 (0) | 2021.05.09 |
tidyverse 특징과 함수 (0) | 2021.05.08 |
[R Programming]attributes(), head() (0) | 2021.05.07 |