SQL, R 전처리 함수 모음
1. 데이터 열추출
SQL>
SELECT id AS new_id (id를 추출하여 new_id로) FROM table
R>
library(dplyr)
select(x_id, y_id, z_id) %>% as.data.frame()
2. 조건에 따른 행추출
SQL>
SELECT * FROM table
WHERE date BETWEEN '2023-12-1' AND '2023-12-31'
R>
table[intersect(which(table$date >= '2023-12-1'),
which(table$date <= '2023-12-31')), ]
또는
table %>% filter(between(as.Date(date),
as.Date('2023-12-1'),
as.Date('2023-12-31')))
3. 샘플링
SQL>
SELECT * FROM table
WHERE RANDOM() <= 0.5
R>
sample_frac(table, 0.5)
filter 함수의 %in%: 지정한 벡터의 값 중 일치하는 열 값을 테이터로 추출
filter(id %in% sample(all_id, size=length(all_id)*0.5))
4. GROUP_BY
SQL>
SELECT all_id,
COUNT(id) AS cnt,
COUNT(new_id) AS new_cnt
FROM table
GROUP By all_id
R>
table %>% group_by(all_id) %>% summarise(cnt=n(),
new_cnt=n_dictit(all_id))
5. 합계
SQL>
SELECT xx
SUM(xx) AS xx_sum FROM table
GROUP BY xx
R>
table %>% group_by(id) %>% summarise(xx_sum<-sum(xx))
6. 기타 함수들
SQL>
PARTITION BY: 집약 순위 지정
ORDER BY: 집약 정렬 방식
BETWEEN
n PRECEDING: n 건 전 행 설정
CURRENT ROW: 자신의 행
n FOLLOWING: n건 후
RANK: 순위 계산
JOIN __ ON x=y AND xx is TRUE AND yy=1
CASE WHEN COUNT() 조건 THEN 명령 END AS 새로운 열
UNION dataFrame 연결
LAG: 과거값 참조
R>
mutate(새로운 열 이름 = 새로운 열 값)
row_number(): 순위 계산
transmute(): mute+select, 지정한 열로 새로운 열을 추가
min_rank(desc()): 순위계산, 내림차순
inner_join( table %>% filter(yy==1, xx), by='x')
bind_rows: dataFrame 연결
mutate(id = if_else(조건, x, y)): 조건에 만족하면 해당 값을 x에, 그렇지 않으면 y에 저장
lag: 과거값 참조