시작하기무료로 시작하기

그룹: 음악에도, 데이터에도 딱 맞아요

데이터를 그룹별로 나눠 요약 통계를 계산해야 하는 상황은 매우 흔합니다. 예를 들어, 월별 또는 지역별 매출을 알고 싶을 수 있죠. R에서는 데이터를 그룹으로 나누고, 각 그룹에 요약 통계를 적용한 다음, 그 결과를 하나의 데이터 구조로 결합하는 과정을 "split-apply-combine"이라고 합니다. 이 개념은 오래전부터 있었고, SQL에는 수십 년 전부터 GROUP BY 구문이 존재합니다. "map-reduce"도 비슷한 개념으로, "map"은 대략적으로 "split"과 "apply"에, "reduce"는 "combine"에 대응합니다. dplyr/sparklyr에서는 mutate() 또는 summarize()를 사용하기 전에 group_by()를 적용합니다. 그룹화할 열 이름은 따옴표 없이 전달합니다. 예를 들어, 열 grp1grp2의 값 조합별로 열 x의 평균을 계산하려면 다음과 같이 작성합니다.

a_tibble %>%
  group_by(grp1, grp2) %>%
  summarize(mean_x = mean(x))

group_by()에 전달하는 열은 보통 범주형 변수여야 한다는 점에 유의하세요. 예를 들어, 키에 따른 평균 몸무게를 계산하려는 경우, 모두의 키가 유일하므로 키로 그대로 그룹화하는 것은 적절하지 않습니다. 대신 cut()을 사용해 키를 구간별 범주로 나눈 다음, 각 범주에서 평균 몸무게를 계산할 수 있습니다.

이 연습은 강의의 일부입니다

R에서 sparklyr로 시작하는 Spark

강의 보기

연습 안내

spark_conn이라는 Spark 연결이 준비되어 있습니다. Spark에 저장된 트랙 메타데이터에 연결된 티블 track_metadata_tbl도 미리 정의되어 있습니다.

  • track_metadata의 내용을 artist_name으로 그룹화한 다음 다음을 수행하세요.
    • 그룹별 duration의 평균을 새 열 mean_duration으로 요약하세요.
    • 결과를 duration_by_artist에 할당하세요.
  • mean_duration을 오름차순으로 정렬해 가장 짧은 곡을 가진 아티스트를 찾으세요.
  • 같은 방식으로 내림차순으로 정렬해 가장 긴 곡을 가진 아티스트를 찾으세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# track_metadata_tbl has been pre-defined
track_metadata_tbl

duration_by_artist <- track_metadata_tbl %>%
  # Group by artist
  ___ %>%
  # Calc mean duration
  ___

duration_by_artist %>%
  # Sort by ascending mean duration
  ___

duration_by_artist %>%
  # Sort by descending mean duration
  ___
코드 편집 및 실행