1  Giới thiệu

Trước buổi học
  • Cài đặt R và RStudio (xem Section 1.3)
  • Cài đặt các R packages này (bấm vào nút copy ở bên phải và paste vào R):
install.packages(c("base64enc", "digest", "evaluate", "glue", "highr", "htmltools", "jsonlite", "knitr", "magrittr", "mime", "rmarkdown", "stringi", "stringr", "xfun", "yaml"))
Mục tiêu
  1. Hiểu ngôn ngữ lập trình là gì và cách học ngôn ngữ lập trình
  2. Hiểu sự khác nhau giữa R và RStudio
  3. Biết cách cài đặt package và gọi library trong R
  4. Biết cách viết file R Script và R Markdown

1.1 R

R là một ngôn ngữ lập trình được phát triển bởi GS. Robert Gentleman và GS. Ross Ihaka tại Đại học Auckland1. Tên gọi R được đặt theo chữ cái đầu của tên 2 tác giả (Robert và Ross).

Robert Gentleman: “Let’s write some software.”
Ross Ihaka: “Sure, that sounds like fun.”2

1.1.1 Ngôn ngữ lập trình

Ngôn ngữ lập trình là một tập hợp các hướng dẫn để yêu cầu máy tính thực hiện một số tác vụ nhất định.3

Ngôn ngữ là phương tiện để con người giao tiếp với con người. Ngôn ngữ lập trình là phương tiện để con người giao tiếp với máy tính.3 Vì vậy, học ngôn ngữ lập trình cũng giống như học ngoại ngữ, bao gồm từ vựng, ngữ pháp, cụm từ, mệnh đề… để viết thành một câu văn mà máy tính có thể hiểu được và làm đúng những gì con người muốn.

Một số ngôn ngữ lập trình trong phân tích dữ liệu [Photo credit]

1.1.2 Câu văn trong R

Câu lệnh (command) hoặc hàm (function) chính là những câu văn trong R để giao tiếp với máy tính. Chúng ta phải học ngữ pháp của 1 câu lệnh và ý nghĩa của nó để có thể sử dụng R để ra lệnh cho máy tính. Một câu lệnh trong R thường có dạng như sau:

tên-câu-lệnh(tên-tham-số = data-đầu-vào hoặc lựa-chọn)
  • Tên câu lệnh: nằm trước dấu (), thể hiện ý nghĩa câu lệnh dùng để làm gì.
  • Tên tham số (argument): nằm trong dấu () là những tham số của câu lệnh đó. Tham số là những yêu cầu nhỏ và cụ thể để máy tính hiểu rõ hơn yêu cầu của người dùng.
  • Dấu =: dùng để gán 1 giá trị cho tham số. Giá trị gán cho tham số có thể là một data đầu vào, hoặc một lựa chọn của người dùng (đúng/sai).

Ví dụ:

mean(x = df$col1, na.rm = TRUE)
  • Tên câu lệnh là mean: chúng ta đang yêu cầu máy tính hãy tính giá trị trung bình của 1 biến.
  • Các tham số là xna.rm:
    • x: là data đầu vào, ở đây chúng ta viết x = df$col1 để cho máy tính biết data đầu vào là cột col1 trong bảng data df.
    • na.rm: là yêu cầu cụ thể cách giải quyết khi gặp missing value (NA), ở đây chúng ta lựa chọn na.rm = TRUE nghĩa là nếu cột col1 có NA thì bỏ những giá trị NA đi trước khi tính trung bình.
Important

Để đọc hướng dẫn sử dụng về câu lệnh, gõ ?tên-câu-lệnh.

1.1.3 R và SPSS, Stata, SAS

  • R là ngôn ngữ lập trình. Người dùng giao tiếp, đối thoại với máy tính bằng cách nhập những câu văn (code) giống như chat với máy tính, để máy hiểu và làm đúng những gì con người muốn.
  • SPSS, Stata, SAS là các gói phần mềm thống kê (software package) thương mại, được thiết kế giao diện người dùng kéo thả, click chọn để dễ dàng giao tiếp với máy tính hơn. Người dùng cũng có thể viết code (SPSS Syntax, Stata command, SAS program) để lưu lại các bước phân tích, nhưng đây không phải mục tiêu chính của các gói thương mại này. Người dùng không thể yêu cầu máy tính làm gì khác với những chức năng đã được quy định sẵn trong gói phần mềm. Mỗi gói phần mềm được viết bằng một ngôn ngữ lập trình:
    • SPSS: Java
    • Stata: C
    • SAS: C

1.2 Tại sao học R?

  1. Miễn phí và sử dụng được trên mọi hệ điều hành thông dụng (Windows, Macs, Linux).

  2. R là ngôn ngữ truyền thống cho phân tích dữ liệu trong nghiên cứu y sinh (biostatistics), tin sinh (bioinformatics), dịch tễ, mô hình dự báo… Chuyên gia ở các ngành này liên tục phát triển các gói phần mềm (packages) viết bằng R cập nhật các phương pháp mới nhất, machine learning, thiết kế web…

Các gói phần mềm phổ biến trong R [Photo credit]

  1. Vẽ biểu đồ chất lượng cao.

Một số biểu đồ vẽ bằng R [Photo credit]

1.3 R và RStudio

R là ngôn ngữ lập trình. Sau khi cài R, chúng ta mở lên sẽ thấy giao diện giống như một khung chat trống. Khung chat này là nơi chúng ta viết code để giao tiếp với máy tính.

RStudio là một môi trường phát triển tích hợp (integrated development environment hay IDE) hay nói đơn giản là một phần mềm để viết code R hiệu quả hơn.

Vì vậy, chúng ta cần cài đặt riêng R (ngôn ngữ lập trình) và RStudio (IDE).

1.3.1 Cài đặt R

Truy cập https://cran.r-project.org/ và tải R cho hệ điều hành của mình.

1.3.2 Cài đặt RStudio

Truy cập https://posit.co/download/rstudio-desktop/ và tải RStudio cho hệ điều hành của mình.

1.4 Snippet manager

Snippet là đoạn code ngắn để thực hiện một việc nhất định. Ví dụ, chúng ta có 1 file excel chứa kết quả xét nghiệm, mỗi batch là 1 sheet có định dạng giống nhau. Chúng ta muốn R đọc tất cả các sheet trong file này vào và ghép lại thành chung 1 bảng. Code có thể giải quyết việc này là:

# https://rpubs.com/tf_peterson/readxl_import
library(readxl)
library(plyr)
library(janitor)

inp <- "path/to/file"
sheets <- excel_sheets(inp)
l <- lapply(sheets, function(x) read_excel(inp, sheet = x))
df <- rbind.fill(l)
df <- clean_names(df)

Chỉ cần thay đường dẫn file vào biến inp là có thể tái sử dụng code cho những files khác nhau. Để thuận tiện trong công việc, chúng ta nên lưu snippet này vào một chỗ nào đó để sau này mỗi khi cần đọc file excel như vậy thì chỉ cần vào copy ra dùng.

1.4.1 Lepton

Lepton là phần mềm quản lý snippet sử dụng tài khoản GitHub. Vào link này và kéo xuống phần Installation để cài đặt Lepton theo hướng dẫn.

1.4.2 Github gist

Để sử dụng Lepton cần tạo tài khoản Github. Vào link này nhấn Sign up ở góc trên cùng bên phải màn hình và tạo tài khoản Github.

1.4.3 Sử dụng Lepton

Đăng nhập Lepton bằng tài khoản Github.

Giao diện Lepton.

Bấm New ở góc trái để tạo snippet mới.

Khi cần tìm snippet, nhấn Shift + Space.

1.5 R packages

R packages là các gói phần mềm được viết bằng ngôn ngữ lập trình R để thực hiện một số tác vụ cụ thể.

1.5.1 Cài đặt R packages

install.packages("readxl")
Lưu ý
  • Cần có internet để tải và cài đặt R packages bằng lệnh install.packages().
  • Khi cài đặt, tên package phải nằm trong dấu ngoặc kép "".

1.5.2 Sử dụng R packages

Sau khi cài đặt thì package sẽ trở thành một “thư viện” trong R. Để gọi thư viện này, dùng:

library(readxl)
Lưu ý
  • Không cần internet để sử dụng library.
  • Khi gọi library thì tên library không nằm trong dấu ngoặc kép nữa "".

1.6 R Script và R Markdown

Các đoạn hội thoại giữa chúng ta và máy tính có thể được lưu lại bằng file R Script (.R) hoặc R Markdown (.Rmd). Gần đây có thêm Quarto (.qmd) mở rộng hơn những gì R Markdown có thể làm. Vì cách viết Quarto khá giống R Markdown, nên chúng ta sẽ tập trung vào học R Markdown cơ bản.

1.6.1 R Script

Tạo R Script bằng cách vào menu File > New File > R Script.

R Script là file chứa các câu lệnh R và những dòng chú thích ngắn gọn về câu lệnh (comments). Có 2 cách để comment:

  • Viết dấu # đầu dòng để xác định dòng này là comment.
  • Viết dấu # ở cuối dòng lệnh.

1.6.2 R Markdown

Tạo R Markdown bằng cách vào menu File > New File > R Markdown....

R Markdown là công cụ để tạo ra tài liệu tự động. Trong file R Markdown chứa code R xen kẽ với văn bản mô tả, bảng, biểu đồ… có thể xuất ra nhiều loại định dạng như .docx, .pdf, .html, .pptx.

Cấu trúc file R Markdown gồm:

  • YAML header: nằm ở trên cùng trong và ngăn cách với phần còn lại bằng cặp dấu ---. Phần này để mô tả tiêu đề tài liệu, tác giả, ngày tháng, định dạng mong muốn
  • Văn bản: phần diễn giải cho tài liệu, gồm các đề mục và chữ diễn giải viết theo ngôn ngữ markdown.
    • Đề mục được đánh dấu bằng dấu # và các đề mục nhỏ hơn thì tăng thêm số dấu # như ##, ###.
    • Phải xuống hàng 2 lần để viết hàng mới trong văn bản.
  • Đoạn code (code chunks): là nơi để viết code và xuất ra các kết quả mong muốn. Code chunks của R được đặt trong cặp dấu:

Để tạo code chunk chúng ta nhấn tổ hợp phím tắt Ctrl + Alt + I, hoặc nhấn vào icon này trên thanh công cụ, chọn R:

Ví dụ có file R Markdown sau:

Khi knit file R Markdown trên sẽ tạo ra file báo cáo sau với đầy đủ tiêu đề, đề mục, bảng kết quả, biểu đồ… giống như được tạo ra từ 1 chương trình soạn thảo văn bản như Word. Để knit file R Markdown thì chọn kí hiệu knit trên thanh công cụ:

Kết quả knit như sau: