Nội dung chính

Cài đặt R

Cài đặt R và RStudio

Giới thiệu RStudio

R là tên của một ngôn ngữ lập trình. Rstudio là công cụ để giao tiếp với ngôn ngữ R. RStudio hỗ trợ giao diện người dùng (GUI)

RStudio GUI

Giao diện RStudio gồm 4 cửa sổ chính:

Các tài liệu hỗ trợ về RStudio có thể tham khảo tại http://www.rstudio.com/ide/docs/. Cụ thể hơn:

  1. Một số thiết lập
    • Vào Tools > Global Options.
      • Thay đổi kiểu chữ và màu của cửa sổ biên tập và cửa sổ lệnh. Loại nào phù hợp với bạn nhất?
      • Bạn có thể đoán tại sao thứ tự của các cửa sổ trong phiên bản của tôi là khác nhau?

Thư mục làm việc và dự án R

Các dự án trên R

Giữ tất cả các file liên quan đến một dự án được tổ chức cùng nhau: dữ liệu nhập, mã R, kết quả phân tích, các hình ảnh…

Xem hướng dẫn quản lý dự án trên RStudio.

Bạn có thể sử dụng các dự án RStudio cho các bài tập và báo cáo cuối kì. Để tạo một dự án RStudio sử dụng cho các bài tập như sau:

  • File -> New Project
  • Chọn “New Directory”
  • Chọn “Empty Project”
  • Đặt tên cho dự án của bạn như tên thư mục. Sau đó chọn nơi lưu thư mục với “Create project as sub-directory of”. Có thể bỏ qua các tùy chọn khác.

Tạo một tài liệu R Markdown đầu tiên

Bạn sẽ sử dụng R Markdown để hoàn thành các bài tập về nhà. Đầu tiên, để tạo một tài liệu R Markdown, bạn thực hiện như sau:

Bạn có thể tra cứu nhanh các tài liệu về R Markdown tại: http://rmarkdown.rstudio.com/.

Tính toán đại số với R

Đơn giản nhất, bạn có thể sử dụng R như là một bảng tính để thực hiện các phép toán đại số cơ bản như: cộng, trừ, nhân hoặc chia:

2 + 3
2 - 3
2 * 3
2 / 3

Phép toán lấy mũ với ^, ví dụ \(4^2\) bằng

4 ^ 2

R bao gồm rất nhiều hàm toán học khác, ví dụ, hàm lấy căn bậc hai là sqrt \(\sqrt{2}\),

sqrt(2)

Bạn có thể kết hợp các phép tính hoặc hàm lại với nhau

(2 * 4 + 3 ) / 10
sqrt(2 * 2)

Biến và phép gán

Trên R, bạn có thể lưu các kết quả tính toán vào các đối tượng để sử dụng sau này. Điều này được thực hiện bằng cách sử dụng phép gán <-.

Ví dụ, câu lệnh bên dưới sẽ lưu kết quả của 2 + 2 vào một đối tượng tên add22

add22 <- 2 + 2

Dễ thấy rằng add22 là bằng 4 4

add22

Và bây giờ bạn có thể sử dụng lại đối tượng add22 trong các phép tính khác,

add22 + 3
ad22 / 2 * 8 + add22
Ghi chú:

Bạn có thể sử dụng kí hiệu = thay cho kí hiệu <- để thực hiện phép gán. Có một vài lý do kỹ thuật để sử dụng <- thay vì =, nhưng lý do chính là sự rõ ràng trong các chương trình R hiện đại.

  1. Tạo các đối tượng
    • Tạo một biến với tên gọi bất kì bạn thích và gán bằng căn bậc hai của 2.
    • Sau đó, nhân biến này với 4.
  • Việc nhân một biến với chính nó và gán lại cho chính nó? Điều gì sẽ xảy ra?

Các chú thích

Bất kì đoạn mã R nào theo sau bởi kí hiệu (#) đều không được thực hiện. Những đoạn này được gọi là các chú thích. Bạn nên sử dụng chú thích để gợi ý và giải thích cho đoạn mã.

#thisisacomment 

Và ở đây, những gì sau dấu # đầu tiên là được thực hiện,

#this is still a comment
2 + 2 # this is also a comment

Kiểm tra: Kết quả của đoạn mã bên dưới?

5 * 4 # + 3 # - 8

Dữ liệu trống

Trong xử lý dữ liệu, các dữ liệu trống (missing data) là khá phổ biến và đặc biệt quan trọng

foo <- c(1, 2, NA, 3, 4)

Hàm na.omit rất hữu ích để loại bỏ bất cứ dòng (quan sát) nào trong tập dữ liệu có giá trị trống trong bất kì cột (biến) nào.

Ví dụ:

dfrm <- data.frame(x = c(NA, NA, 4, 3), 
                   y = c(NA, NA, 7, 8)
                   )

dfrm

na.omit(dfrm)
  1. Xử lý dữ liệu NA’s

    • Kết quả của 2 + NA là?
    • Kết quả của mean(foo) là?
    • Xem tài liệu của hàm mean để xem cách hàm xử lý các giá trị trống.
    • Kết quả median(foo) như thế nào?
    • foo > 2TRUE hay là FALSE?
    • Sự khác nhau giữa is.na(foo)! is.na(foo) ?
    • Kết quả của foo[! is.na(foo)] là?
    • Chạy thử đoạn mã sau:
    dfrm2 <- data.frame(x = c(NA, 2, NA, 4), y = c(NA, NA, 7, 8))
    
    dfrm2
    
    na.omit(dfrm2)
    • Bạn có giữ được tất cả dữ liệu? Liệu đã sai ở đâu?

Nạp dữ liệu vào R

Phần còn lại của bài học này sẽ sử dụng dữ liệu về GDP bình quân đầu người và tỉ lệ sinh từ bộ dữ liệu Gapminder.

Tải dữ liệu về dưới dạng (“CSV”) tại đây.

Sau đó sử dụng hàm read.csv để đọc file csv vừa tải

gapminder <- read.csv("gapminder.csv", stringsAsFactors = FALSE)

Điều này sẽ tạo ra một data frame.

Một data frame là một kiểu đối tượng trên R. Nó có ý nghĩa tương tự như một tập dữ liệu hoặc một spreadsheet — với các dòng là các quan sát và các cột là các biến.

  1. Xem nhanh dữ liệu

    • Câu lệnh sau ý nghĩa la gì?
    gapminder
    • Bạn biết bao nhiêu thông tin về bộ dữ liệu đang làm việc?

Có rất nhiều thông tin ở đây. Bằng cách nào bạn sẽ có một bức tranh tổng thể về bộ dữ liệu?

dim(gapminder)
names(gapminder)
head(gapminder)
tail(gapminder)
summary(gapminder)
  1. Trả lời các câu hỏi sau:
    • Có bao nhiêu biến trong tập dữ liệu?
    • Có bao nhiêu quan sát ở đây?
    • Đơn vị của quan sát là gì?
    • Kiểu dữ liệu của các biến khác nhau?
    • Khoảng thời gian (năm) trong bộ dữ liệu?
    • Giá trị trung bình và trung vị của tuổi thọ?

Làm việc với các biến trong các data frames

Bạn có thể trích các biến riêng rẽ và thực hiện các thao tác dữ liệu trên chúng. Để trích một biến từ một data frame, bạn sử dụng toán tử trích với dấu ($) như sau:

gapminder$lifeExp

Bạn có thể thực hiện các thao tác dữ liệu cụ thể trên b iến này như:

mean(gapminder$lifeExp)
median(gapminder$lifeExp)
sd(gapminder$lifeExp)
min(gapminder$lifeExp)
max(gapminder$lifeExp)
quantile(gapminder$lifeExp)
  1. Thống kê mô tả
    • Giá trị trung bình và trung vị của GDP bình quân đầu người?
    • Tìm giá trị bách phân vị thứ 30 của GDP bình quân đầu người?
    • Có bao nhiêu quốc gia trong tập dữ liệu? và có bao nhiêu năm?
      • Hàm length() tính toán độ dài của một véc tơ.
      • Hàm unique() trả về số giá trị riêng biệt trong một vec tơ.
    • Chọn một biến và nhân nó với 2. Điều gì sẽ xảy ra? Kiểm tra biến trong tập dữ liệu để tháy nếu nó đã thay đổi.

Chú thích:


Nội dung được phát hành theo điều kiện Creative Commons Attribution-ShareAlike 3.0 Unported.