본문 바로가기

r14

R전처리 - 순위계산 전치리 과정 중에 순위를 계산해야 하는 경우가 있다. 대상 데이터를 추리거나 복잡한 시간 데이터를 결합할 때 시간 순위를 매겨서 결합의 조건으로 이용할 수도 있습니다. 순위를 매길 때는 계산 비용을 고려해야 하는데, 이때, 정렬 기능도 구현해야 하므로 데이터 수가 많으면 계산 비용이 비약적으로 늘어납니다. 하지만, 순위를 매기는 범위를 나누는 처리 등으로 계산 비용을 줄일 수 있습니다. 이처럼 그룹별로 순서를 정렬하고 순위를 매기는 계산은 Window() 함수를 이용하면 간략하고 성능 좋은 코드를 작성할 수 있습니다. Window() 함수는 집약 함수 중 하나인데, 일반적인 집약 함수와 비교하여 행을 집약하는 것이 아니라 집약한 결과를 계산하여 각 행에 첨부하는 점이 다릅니다. 순위를 구하는 함수 같은 .. 2021. 2. 11.
R, 데이터와 종류의 개수 산출 가장 기본적인 집약 처리로 데이터 카운트가 있습니다. 대상 데이터 레코드의 수(행 수)를 세는 처리입니다. 이외에도 자주 사용하는 집계 처리로 유니크 카운트가 있는데, 데이터에서 같은 값인 레코드를 제외한 레코드 수를 세는 처리입니다. 즉, 데이터 값의 종류를 카운팅 하는 것입니다. R로 집약 처리할때는 dplyr 패키지의 group_by 함수로 집약 단위를 지정하고 dplyr 패키지의 summarise 함수에서 집약 함수를 지정해 구현합니다. apply 계열의 함수를 사용하는 등 다른 방법도 있지만 계산속도와 가독성을 고려하면 dplyr 패키지를 이용하는 것이 가장 좋습니다. reserve_tb %>% group_by 함수로 집약 단위를 hotel_id로 지정한다 : group_by(hotel_id) .. 2021. 2. 3.
R, 집약 ID에 기반한 샘플링 샘플링은 공평한 샘플링 구현이 가장 중요합니다. 어느 한쪽으로 편향된 샘플링을 하게 되면 이후 분석에서 편향된 데이터에 기반한 경향과 잘못된 결과를 도출할 수 있습니다. 공평하게 샘플링하려면 분석 대상이 단위와 샘플링 단위를 서로 맞춰야 합니다. R을 이용해 집약 ID 단위로 샘플링하려면 먼저 집약 ID의 유니크한 값의 리스트를 뽑아내고, 뽑아낸 집약 ID리스트를 샘플링해 대상 ID을 결정한 다음에 대상 데이터를 추출하면 됩니다. 예를 들어 1행에 1회의 숙박 예약을 나타내는 레코드를 50% 샘플링한 후의 데이터에서 예약 인원 수별 예약 건수 데이터 비율을 생각해보면 샘플링 전후의 분석 결과는 크게 다르지 않습니다. 분석단위가 예약한 건이고, 샘플링 단위도 예약한 건이기 때문입니다. 이번에는 1행에 1회.. 2021. 2. 2.
R, 데이터 값을 고려하지 않는 샘플링 데이터를 분석할 때 추출할 데이터 수가 너무 많아 다루기 어려운 경우가 있습니다. 그럴 때는 샘플링으로 데이터 수를 줄일 수 있습니다. 샘플링에는 자의적 샘플링과 랜덤 샘플링이 있습니다. 자의적 샘플링은 스스로 샘플링할 조건을 정하는 방법입니다. 보통 샘플링이라고하면 랜덤 샐플링을 의미합니다. R을 이용한 샘플링 방법은 다양하지만, 전처리에서는 dplyr 패키지를 활용할 때가 많습니다. # reserve_tbdptj 50% 샘플링 한다. : sample_frac(reserve_tb, 0.5) sample_frac 함수는 행 단위로 랜덤 샘플링을 시행합니다. 첫 번째 매개변수에는 대상 data.fram을 지정하고 두 번째 매개변수에는 추출링 배율을 지정합니다. 배율이 아닌 건수로 지정하려면 sample_n.. 2021. 2. 2.