Trong lĩnh vực xử lý và phân tích dữ liệu, người dùng thường đối mặt với nhiều thách thức và khó khăn trong việc làm việc với dữ liệu. Các công việc như nhập dữ liệu, làm sạch dữ liệu, xử lý dữ liệu và tạo biểu đồ thường đòi hỏi nhiều công đoạn phức tạp và mất thời gian. Ngoài ra, việc duy trì tính nhất quán và linh hoạt trong quy trình làm việc cũng là một thách thức. Ví dụ, khi làm việc với một bộ dữ liệu lớn thì việc bị mất, thiếu thông tin về dữ liệu hay là trong quá trình thu thập dữ liệu có các thông tin chưa chính xác mà khi đưa vào phân tích nếu chúng ta không xử lý chung sẽ cho ra một kết quả sai và quá trình phân tích là hoàn toàn không có ý nghĩa.
Để giải quyết những thách thức này, thì có rất nhiều công cụ hoàn toàn giúp ta có thể giải quyết được một cách nhanh gọn và tiết kiệm thời gian hiệu quả. Trong bài viết này, chúng em sẽ giới thiệu về tidyverse, một công cụ cung cấp một giải pháp toàn diện trong xử lý và phân tích dữ liệu.
Tidyverse là một bộ công cụ được phát triển bởi nhà phân tích dữ liệu và nhà phát triển phần mềm nổi tiếng Hadley Wickham và nhóm của ông tại công ty RStudio. Hadley Wickham là một trong những người đóng góp quan trọng vào sự phát triển của ngôn ngữ R và được biết đến với công việc của mình trong việc tạo ra các gói R mạnh mẽ, dễ sử dụng, có tầm quan trọng và ảnh hưởng trong lĩnh vực.
Tidyverse xuất phát từ triết lý của Hadley Wickham về xử lý dữ liệu và phân tích dữ liệu trong R. Ông đã nhận thấy rằng việc làm việc với dữ liệu trong R thường không nhất quán và gặp nhiều khó khăn trong việc tổ chức và xử lý dữ liệu. Vì vậy, ông đã tạo ra tidyverse nhằm cung cấp một phương pháp chuẩn hóa và nhất quán để làm việc với dữ liệu. Hadley Wickham và nhóm của ông đã phát triển các gói R như dplyr, tidyr, ggplot2 và purrr, cùng với nhiều gói khác để tạo nên tidyverse. Những gói này không chỉ giúp người dùng xử lý dữ liệu một cách dễ dàng và nhất quán, mà còn mang lại sự linh hoạt và mở rộng để giải quyết các thách thức trong lĩnh vực khoa học dữ liệu. Tidyverse đã trở thành một hệ sinh thái phát triển phần mềm rất lớn và đa dạng, với đóng góp và cống hiến từ nhiều nhà phát triển, người dùng và cộng đồng R.
1.Dplyr: Package này cung cấp các công cụ mạnh mẽ để thực hiện các hoạt động xử lý, truy vấn và biến đổi dữ liệu. Dplyr cho phép bạn thực hiện các thao tác như chọn cột, lọc dữ liệu, sắp xếp, nhóm và tóm tắt dữ liệu.
• Mutate(): mutate() là một hàm cực kì tiện ích trong khi phân tích dữ liệu, vì nó cho phép bạn tạo ra biến số mới tùy thích trong data frame. Bạn có thể dùng mutate cho 2 việc: hoán chuyển biến số hiện có và tạo ra biến số mới hoàn toàn.
• Select(): chọn các biến dựa trên tên của chúng.
• Filter(): chọn các trường hợp dựa trên giá trị của chúng.
• Summarise(): dùng để tóm tắt dữ liệu
• Arrange(): thay đổi thứ tự của các hàng
2.Ggplot2: Package này cung cấp công cụ đồ họa mạnh mẽ để tạo ra biểu đồ đẹp mắt và rõ ràng. Ggplot2 cho phép bạn tạo các biểu đồ dựa trên dữ liệu và áp dụng các thay đổi mô phỏng phức tạp và tùy chỉnh.
• Histograms: geom_histogram()
• Biểu đồ cột:* geom_bar()* hoặc geom_col()
• Box plots: geom_boxplot()
• Điểm (vd: biểu đồ phân tán): geom_point()
• Biểu đồ đường: geom_line() hoặc geom_path()
• Đường xu hướng: geom_smooth()
3.Readr: Package này hỗ trợ đọc và ghi dữ liệu từ và đến các định dạng dữ liệu phổ biến như CSV, Excel và các tập tin văn bản. Readr giúp đọc dữ liệu nhanh chóng và chính xác, đồng thời cung cấp các công cụ để xử lý và chuyển đổi dữ liệu . Những hàm quan trọng trong package này gồm:
• Đọc tệp tin dữ liệu có các trường phân tách bằng dấu phẩy: read_csv()
• Đọc tệp tin dữ liệu có các trường phân tách bằng tab (TSV): read_csv()
• Đọc tệp tin dữ liệu có các trường phân cách bằng dấu chấm phẩy (;): read_csv2()
• Đọc tệp tin dữ liệu có các trường phân cách bằng kí tự khác: read_delim()
• Đọc tệp tin dữ liệu có kích thước của trường được quy định trước: read_table()
4.Purrr: Package Purrr là một gói dùng để làm việc với các hàm và vector. Một hàm được sử dụng phổ biến trong package Purr là hàm map().Các hàm họ map() sử dụng cho vòng lặp (loop). Được thiết kế rất tiện và loại bỏ những thao tác thừa đối với việc sử dụng vòng lặp for, và đầu ra xác định rõ ràng hơn so với vòng lặp while.
• map(): tạo thành một danh sách.
• map_lgl(): tạo ra một vectơ logic.
• map_int(): tạo thành một vectơ số nguyên.
• map_dbl(): tạo thành một vectơ kép
• map_chr(): tạo thành một vectơ ký tự.
5.Tibble: Package Tibble dùng để mô phỏng lại bộ dữ liệu theo yêu cầu (thêm một hoặc nhiều biến vào bộ dữ liệu đã có sẵn)
• Bạn có thể tạo một tibble từ một đối tượng hiện có với: as_tibble()
• Bạn cũng có thể tạo một tibble mới từ các vectơ đại diện cho các cột bằng: tibble()
• Có thể tạo những cột dữ liệu bằng: tribble()
6.Stringr: Package này cung cấp các công cụ mạnh mẽ để làm việc với chuỗi ký tự. Stringr cung cấp các hàm để tìm kiếm, thay thế, tách chuỗi và thực hiện các xử lý phức tạp với chuỗi ký tự.Một số hàm cơ bản trong stringr:
• Các hàm kết hợp, thiết lập thứ tự, phân tách, sắp xếp: str_c(), str_glue(), str_order(), str_split()
• Các hàm điều chỉnh độ dài ký tự: str_pad(), str_trunc(), str_wrap()
• Các hàm thay đổi chữ hoa/chữ thường: str_to_upper(), str_to_title(), str_to_lower(), str_to_sentence()
• Các hàm đánh giá và trích xuất vị trí: str_length(), str_sub(), word()
• Phát hiện và định vị: str_detect(), str_subset(), str_match(), str_extract()
• Sửa đổi và thay thế: str_sub(), str_replace_all()
7.Forcats: Giúp chúng ta sắp xếp thông tin của bộ dữ liệu theo các trình tự nhất định( di chuyển các yếu tố được chỉ định lên trước, sắp xếp theo lần xuất hiện đầu tiên, đảo ngược hoặc xáo trộn ngẫu nhiên) và sửa đổi các trình tự dữ liệu(thu gọn các cấp độ ít xuất hiện thành các cấp độ khác, mã hoá lại dữ liệu theo cách thủ công).
8.Tidyr: Package này giúp bạn làm việc với dữ liệu không được tổ chức cấu trúc (messy data) và biến đổi chúng thành dạng dữ liệu rõ ràng (tidy data). Tidyr cung cấp các công cụ để chuyển đổi dữ liệu giữa các định dạng rỗng (wide format) và dài (long format) và làm sạch dữ liệu (source). Các hàm phổ biến trong Package Tidyr:
• Để chuyển đổi dữ liệu từ hàng thành cột: Pivot_longe()
• Chuyển đổi từ cột thành hàng: Pivot_wider()
9.Lubridate: Package lubridate là 1 package rất hữu dụng để xử lý date và date-time. Một số function cơ bản trong package lubridate:
• Để lấy thông tin ngày, tháng, năm của date chúng ta có thể sử dụng hàm: day(), month(), year()
• Trong trường hợp chúng ta muốn xem hôm nay là thứ mấy, sử dụng hàm wday() và thêm option label = T.
• Nếu chúng ta muốn xem ngày trong tháng hoặc ngày trong năm, sử dụng hàm mday() và yday() tương ứng
• Chúng ta có thể dùng các hàm hour(), minute(), second() để biết được giờ, phút, giây của date-time.
1.Hms: Nó được phát triển bởi nhóm tidyverse và có thể được sử dụng để lưu trữ và thao tác các giá trị thời gian trong ngày. Gói triển khai một lớp S3 để lưu trữ và định dạng các giá trị thời gian trong ngày dựa trên “difftime”. Nó có thể hữu ích để đơn giản hóa việc trao đổi dữ liệu với cơ sở dữ liệu, bảng tính và các nguồn dữ liệu khác.Gói hms cung cấp các chức năng và phương pháp khác nhau để làm việc với các giá trị thời gian trong ngày. Một số chức năng chính trong package này bao gồm:
• Hms() : Hàm này tạo ra một đối tượng đại diện cho một thời gian cụ thể trong ngày.
• As_hms(): Hàm này chuyển đổi một biểu diễn số thời gian thành lớp hms.
• parse_hms():Hàm này chuyển đổi các vectơ ký tự thành các đối tượng của lớp hms.
• as.numeric(): Kiểm tra xem vector đó có ở dưới dạng số hay không.
Ghi chú:
S3: đề cập đến một hệ thống lớp được tích hợp trong R. Hệ thống chi phối cách R xử lý các đối tượng của các lớp khác nhau.
Difftime: Sự khác biệt về thời gian
2.Feather: Package “feather” là một gói trong R được sử dụng để đọc và ghi file feather, được thiết kế để lưu trữ các bảng dữ liệu. Feather cho phép lưu trữ và chia sẻ các bộ dữ liệu giữa các ngôn ngữ lập trình khác nhau như Python và R.
• Bạn có thể sử dụng các hàm write_feather() để ghi dữ liệu vào file feather và read_feather() để đọc dữ liệu từ file feather.
3.Haven: Package haven là một package trong ngôn ngữ lập trình R được sử dụng để nhập và xuất dữ liệu từ các định dạng thống kê khác nhau. Nó cho phép người dùng nhập dữ liệu từ các định dạng như SPSS, SAS và Stata vào R và xuất dữ liệu từ R sang các định dạng này.
• Package haven sử dụng thư viện ReadStat để thực hiện việc nhập dữ liệu và cung cấp các hàm như read_sas(), read_sav(), read_dta() để đọc dữ liệu từ các định dạng tương ứng.
• Ngoài ra, package haven cũng cung cấp các hàm như write_sas(), write_sav(), write_dta() để xuất dữ liệu từ R sang các định dạng SPSS, SAS và Stata.
4.Httr: Trong R, gói httr là một gói phổ biến để làm việc với giao thức HTTP. Gói này cung cấp các công cụ để tạo, gửi và xử lý các yêu cầu HTTP, bao gồm việc tương tác với các API web, tải xuống dữ liệu từ các trang web và thực hiện các tác vụ liên quan đến HTTP khác. Gói httr cung cấp một loạt các hàm hữu ích để thực hiện các tác vụ HTTP. Dưới đây là một số ví dụ về việc sử dụng gói httr:
• Gửi yêu cầu GET đến một URL: Get()
• Trích xuất nội dung phản hồi từ yêu cầu: Content()
• Gửi yêu cầu POST với dữ liệu: Post()
• Xử lý lỗi và mã trạng thái từ phản hồi: Dùng if() else()
HTTP là Giao thức truyền siêu văn bản (Hypertext Transfer Protocol) và là định dạng cơ bản của giao thức yêu cầu (request)/phản hồi (response) giữa máy khách và máy chủ. Đầu vào và đầu ra chính xác có thể khác nhau tùy thuộc vào loại API nhưng quy trình là giống nhau - “Request” (thường là HTTP request) từ người dùng, thường chứa một truy vấn, theo sau là “Response”, chứa thông tin trạng thái về request và có thể là nội dung được yêu cầu.
5.Jsonlite: Gói thư viện “jsonlite” trong R là một công cụ hỗ trợ đọc và tạo các bảng JSON. Gói này cung cấp một trình phân tích JSON nhanh chóng và tin cậy, được tối ưu hóa cho dữ liệu thống kê.
6.Rvest: Package cho phép đọc dữ liệu html từ web trong hệ sinh thái của tidyverse. Sử dụng rvest cho phép thu thập dữ liệu một cách nhanh chóng từ web.
7.Readxl: Package này dùng để đọc tập tin Excel và chuyển thành data.frame. Câu lệnh dùng để đọc tập tin Excel là Read_excel().
8.Xml2: Package xml2 là một gói liên kết với package libxml2, giúp dễ dàng làm việc với HTML và XML từ R. Một số function cơ bản trong xlm2:
• Read_xml(): Đọc file HTML hoặc XML
• XML_type(): Xác định loại nút
• Xml_structure(): Hiển thị cấu trúc của tài liệu html/xml
• Xml_text(): Trích hoặc thay đổi văn bản
9.Modelr: Gói modelr trong R là một công cụ mạnh mẽ cung cấp các chức năng để tích hợp liền mạch mô hình hóa vào cụm các thao tác và trực quan hóa dữ liệu.
• %>% : Package này cho phép thực hiện các thao tác mô hình hoá một cách dễ đọc và ngắn gọn hơn
• geom_ref_line(): Thêm dòng tham chiếu
• add_residuals(): Thêm phần dư vào bộ dữ liệu
• add_predictions(): Thêm dự báo vào bộ dữ liệu
Có thể nói, tidyverse là một ngôn ngữ để giải quyết các thách thức trong khoa học dữ liệu bằng mã R. Mục tiêu chính của nó là tạo ra một khung giao tiếp giữa con người và máy tính về dữ liệu. Cụ thể hơn, tidyverse là một bộ sưu tập các gói R chia sẻ cùng một triết lý thiết kế cấp cao và cấu trúc ngữ pháp và dữ liệu cấp thấp, nhằm đảm bảo việc học một gói dễ dàng hơn và tạo nền tảng cho việc học các gói tiếp theo. Tidyverse đã trở thành một công cụ quan trọng và phổ biến trong cộng đồng người dùng R và khoa học dữ liệu. Nó không chỉ là một tập hợp các gói R, mà còn là một triết lý và một cách tiếp cận toàn diện để làm việc với dữ liệu.
Mọi việc phân tích dữ liệu đều bao gồm các nhiệm vụ chính như là: nhập dữ liệu, làm sạch, xử lý dữ liệu, trực quan hóa và phân tích dữ liệu. Bằng cách cung cấp một bộ gói hợp nhất, tidyverse sẽ làm việc với dữ liệu một cách hiệu quả hơn. Ngoài ra, tidyverse cho phép người dùng cài đặt các gói bằng một câu lệnh duy nhất, điều này đơn giản hóa quá trình cài đặt và đảm bảo người dùng có quyền truy cập vào các gói cốt lõi của hệ sinh thái tidyverse. Mặc dù, tidyverse cung cấp một bộ công cụ mạnh mẽ, nhưng nó nhận thức rằng các dự án khoa học dữ liệu thường đòi hỏi sử dụng các gói chuyên ngành ngoài phạm vi của tidyverse. Mục tiêu của tidyverse không phải giải quyết tất cả các vấn đề có thể có, mà là cung cấp các công cụ cho các thách thức phổ biến nhất trong khoa học dữ liệu. Tiếp cận này cho phép người dùng tận dụng ưu điểm của tidyverse trong khi tích hợp các gói chuyên ngành khác theo nhu cầu.
Khi học R, chúng em nhận ra có rất nhiều gói hỗ trợ trong quá trình phân tích dữ liệu, tuy nhiên việc chọn tidyverse tìm hiểu sẽ bao gồm rất nhiều gói nhỏ khác, việc tìm hiểu một gói rộng hơn các gói còn lại sẽ giúp chúng em có cái nhìn toàn diện và bao quát hơn, từ đó làm nền tảng cho việc học và phân tích các gói còn lại. Ngoài ra, tidyverse có một cộng đồng hỗ trợ nhiệt tình bao gồm các nhà phát triển và người dùng trên toàn thế giới, cho nên việc nghiên cứu tidyverse giúp chúng em học được nhiều kiến thức hơn từ cộng đồng đó.
Ngoài ra, sau khi nghiên cứu về gói này chúng em sẽ đưa ra: Đánh giá hiệu suất và hiệu quả của tidyverse, mục tiêu này tập trung vào việc nghiên cứu và đánh giá khả năng của tidyverse trong việc xử lý dữ liệu và phân tích dữ liệu so với các phương pháp và công cụ khác. Qua đó, ta có thể đưa ra nhận xét về hiệu suất và hiệu quả của tidyverse trong quy trình làm việc với dữ liệu. Khám phá quy trình làm việc và thực tiễn sử dụng tidyverse, tập trung vào việc khám phá quy trình làm việc sử dụng tidyverse và thực hiện các bước thực tế trong quá trình xử lý và phân tích dữ liệu. Nghiên cứu này có thể xem xét các bước từ nhập dữ liệu, làm sạch dữ liệu, xử lý dữ liệu, tạo biểu đồ, và lập trình sử dụng tidyverse và phân tích những lợi ích và thách thức của việc sử dụng tidyverse trong quy trình làm việc thực tế. Áp dụng tidyverse trong các ứng dụng thực tế.