Bắt đầu ngayBắt đầu miễn phí

Chuyển đổi biến liên tục thành biến logical

Biến logical rất hữu ích vì thường dễ suy nghĩ theo kiểu "có hoặc không" hơn là theo số. Ví dụ, nếu ai đó hỏi bạn "Bạn có muốn một tách trà không?", câu trả lời có hoặc không sẽ hợp lý hơn là "Có 0,73 khả năng tôi muốn một tách trà". Điều này cũng có ứng dụng thực tế trong khoa học dữ liệu. Chẳng hạn, một xét nghiệm tiểu đường có thể trả về nồng độ glucose trong huyết tương của bệnh nhân dưới dạng một con số. Điều bạn thực sự quan tâm là "Bệnh nhân có bị tiểu đường không?", vì vậy bạn cần chuyển con số đó thành giá trị logical dựa trên một ngưỡng nhất định.

Trong base R, việc này khá đơn giản, như sau:

threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l

Tất cả các hàm biến đổi đặc trưng của sparklyr có giao diện người dùng tương tự nhau. Ba đối số đầu tiên luôn là một Spark tibble, một chuỗi ký tự đặt tên cột đầu vào và một chuỗi ký tự đặt tên cột đầu ra. Tức là chúng theo mẫu sau.

a_tibble %>%
  ft_some_transformation("x", "y", some_other_args)

Cách của sparklyr để chuyển một biến liên tục thành logical là dùng ft_binarizer(). Ví dụ về tiểu đường phía trên có thể viết lại như sau. Lưu ý rằng giá trị ngưỡng phải là một số, không phải một chuỗi tham chiếu đến cột trong tập dữ liệu.

diabetes_data %>%
  ft_binarizer("plasma_glucose_concentration", "has_diabetes", threshold = threshold_mmol_per_l)

Theo triết lý của Spark là dùng DoubleType ở mọi nơi, đầu ra từ ft_binarizer() thực ra không phải logical; nó là numeric. Đây là cách đúng để bạn tiếp tục làm việc trong Spark và thực hiện các biến đổi khác, nhưng nếu bạn muốn xử lý dữ liệu trong R, bạn cần nhớ chuyển kiểu về logical một cách tường minh. Mẫu mã sau đây rất thường gặp.

a_tibble %>%
  ft_binarizer("x", "is_x_big", threshold = threshold) %>%
  collect() %>%
  mutate(is_x_big = as.logical(is_x_big))

Bài tập này sử dụng trường có tên khá… kỳ là artist_hotttnesss, cung cấp thước đo mức độ nghệ sĩ được truyền thông quan tâm tại thời điểm tạo bộ dữ liệu. Nếu bạn muốn tìm hiểu thêm về vẽ biểu đồ với gói ggplot2, hãy học khóa Introduction to Data Visualization with ggplot2.

Bài tập này là một phần của khóa học

Nhập môn Spark với sparklyr trong R

Xem khóa học

Hướng dẫn bài tập

Kết nối Spark đã được tạo sẵn cho bạn là spark_conn. Một tibble gắn với siêu dữ liệu bản nhạc được lưu trong Spark đã được định nghĩa trước là track_metadata_tbl.

  • Tạo một biến tên hotttnesss từ track_metadata_tbl.
    • Chọn trường artist_hotttnesss.
    • Dùng ft_binarizer() để tạo trường mới is_hottt_or_nottt, nhận giá trị true khi artist_hotttnesss lớn hơn 0,5.
    • Thu thập kết quả bằng collect().
    • Chuyển trường is_hottt_or_nottt sang kiểu logical.
  • Vẽ biểu đồ cột ggplot() của is_hottt_or_nottt.
    • Đối số đầu tiên của ggplot() là đối số dữ liệu, hotttnesss.
    • Đối số thứ hai của ggplot() là thẩm mỹ, is_hottt_or_nottt được bọc trong aes().
    • Thêm geom_bar() để vẽ các thanh.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# track_metadata_tbl has been pre-defined
track_metadata_tbl

hotttnesss <- track_metadata_tbl %>%
  # Select artist_hotttnesss
  ___ %>%
  # Binarize to is_hottt_or_nottt
  ___ %>%
  # Collect the result
  ___ %>%
  # Convert is_hottt_or_nottt to logical
  ___

# Draw a barplot of is_hottt_or_nottt
ggplot(___, aes(___)) +
  ___()
Chỉnh sửa và Chạy Mã