1 Giới thiệu

Sức mạnh của R nằm ở tập hợp các thư viện và ngày nay, hệ sinh thái đa dạng này đã mang R đến gần hơn với người sử dụng thông thường cũng như các nhà khoa học dữ liệu chuyên nghiệp bởi sức mạnh, sự tiện ích của chúng.

Phân tích dữ liệu là một phạm trù mang tính phổ quát do sự phong phú của những lĩnh vực chuyên môn và phương pháp thống kê, máy học đi kèm với chúng. Bài viết trình bày một số gói (package) thường được sử dụng (general purpose) cho những tác vụ hay gặp nhất khi làm việc với dữ liệu. Tất cả các package này đều có trên CRAN và dễ dàng install với cú pháp:

install.package("<package_name>")

và nạp trước khi sử dụng với cú pháp:

library(<package_name>)

2 Sử dụng để đọc dữ liệu

2.1 readr

R base đã cung cấp nhiều hàm để đọc dữ liệu từ các tập tin csv như:

  • read.csv
  • read.table
  • read.fwf

Package này cung cấp các hàm với chức năng tương tự với nhiều tuỳ chọn hơn, hiệu năng tốt hơn và thay thế . vốn dễ gây hiểu lầm với nhiều lập trình viên bằng _:

  • read_csv đọc tệp tin dữ liệu có các trường phân cách bằng dấu phẩy ,
  • read_csv2 đọ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_tsv đọc tệp tin dữ liệu có các trường phân cách bằng kí tự tab \t
  • read_delim đọc tệp tin dữ liệu có các trường phân cách bằng kí tự khác
  • read_table đọc tệp tin dữ liệu có kích thước của trường được quy định trước

2.2 readxl

Khi làm việc trong môi trường văn phòng hay thì các tập tin Excel là định dạng hay gặp nhất. Package đọc tập tin Excel và chuyển thành data.frame. Package này sử dụng thư viện phát triển bằng C++ nên không cần cài thêm Java như ConnectXL và hỗ trợ .xls lẫn .xlsx.

library(readxl)

## read_excel reads both xls and xlsx files
read_excel("my-old-spreadsheet.xls")
read_excel("my-new-spreadsheet.xlsx")

## Specify sheet with a number or name
read_excel("my-spreadsheet.xls", sheet = "data")
read_excel("my-spreadsheet.xls", sheet = 2)

## If NAs are represented by something other than blank cells,
## set the na argument
read_excel("my-spreadsheet.xls", na = "NA")

2.3 haven

Bên cạnh Excel, các tập tin dữ liệu của các phần mềm thống kê khác như SPSS, Stata, SAS cũng rất thông dụng. Package cho phép đọc các tập tin định dạng này, hỗ trợ các định dạng mới nhất và chuyển thành data.frame.

library(readxl)

## Read file from SAS
read_sas("path/to/file")

## Read file from SPSS
read_por("path/to/file")
read_sav("path/to/file")

## Read file from Stata
read_dta("path/to/file")

3 Trình diễn dữ liệu - data visualization

3.1 ggplot2

Đây là package nổi tiếng nhất của R trình diễn dữ liệu tĩnh (static), cho phép người dùng có thể tạo các đồ thị nhanh chóng với không nhiều các dòng lệnh. Package được xây dựng trên cơ sở lý thuyết “Ngữ pháp đồ hoạ” - Grammar of graphic của Leland Wilkinson và các đồng sự (2005). Rất nhiều thư viện đồ hoạ sau này phát triển cùng triết lý này với ggplot2

library(ggplot2)

dat <- data.frame(time = factor(c("Lunch","Dinner"), levels = c("Lunch","Dinner")),
        total_bill = c(14.89, 17.23))

## Very basic bar graph
ggplot(data = dat, aes(x = time, y = total_bill)) +
  geom_bar(stat = "identity")

## Map the time of day to different fill colors
ggplot(data = dat, aes(x = time, y = total_bill, fill = time)) +
  geom_bar(stat = "identity")

## Add a black outline
ggplot(data = dat, aes(x = time, y = total_bill, fill = time)) +
  geom_bar(colour = "black", stat = "identity")

## No legend, since the information is redundant
ggplot(data = dat, aes(x = time, y = total_bill, fill = time)) +
  geom_bar(colour = "black", stat = "identity") +
  guides(fill = FALSE)

3.2 ggthemes

Đây là package nên dùng đi kèm với ggplot2, cho phép người dùng có thể tuỳ biến layout dễ dàng với nhiều template dựng sẵn.

library("ggplot2")
library("ggthemes")

p <- ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point() +
  ggtitle("Cars")

p2 <- ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars")

p3 <- p2 + facet_wrap(~am)

p + geom_rangeframe() +
  theme_tufte() + 
  scale_x_continuous(breaks = extended_range_breaks()(mtcars$wt)) +
  scale_y_continuous(breaks = extended_range_breaks()(mtcars$mpg))

## Economist theme
p2 + theme_economist() + scale_colour_economist() 

## Dark theme
p2 + theme_solarized(light = FALSE) +
  scale_colour_solarized("red")

## Tableau look
p2 + theme_igray() + scale_colour_tableau()

4 Xử lý dữ liệu thô - data manipulation

R base cung cấp nhiều hàm thao tác với dữ liệu. Tuy nhiên R base cũng bộc lộ nhiều hạn chế, gây ra sự khó khăn cho người dùng, nhất là khi sự phức tạp và kích thước dữ liệu tăng lên. Những package dưới đây bổ khuyết những hạn chế của R base.

4.1 dplyr

Package được phát triển Hadley Wickham, tác giả của ggplot2. Package giúp việc thao tác với data frame dễ dàng và thậm chí có thể tương tác với cơ sở dữ liệu quan hệ. Kết hợp với toán tử %>%, nhiều người cho rằng dplyr đã tạo ra 1 concept mới cho R là ngữ pháp của thao tác dữ liệu, hàm ý so sánh với ngữ pháp của đồ thị.

4.2 data.table

Khi kích thước của data frame, thao tác xử lý có thể tốn rất nhiều thời gian. data.table được phát triển trên nền của C++ và sử dụng nhiều khái niệm của C++ giúp tối ưu hiệu năng khi thực thi. Tuy nhiên cú pháp của dplyr không trong sáng và dễ đọc như dplyr.

4.3 reshape2

Khi bạn chuyển đổi data frame từ wide format sang long format thì đây là package rất hữu ích. (Đọc thêm về wide format và long format ở link này)

5 Soạn thảo văn bản và báo cáo

Nghiên cứu khoa học khả lặp - reproducible research đang là xu thế mới của giới khoa học và những package sẽ giúp người nghiên cứu khoa học hoàn toàn có thể viết báo cáo của mình bằng các mã nguồn R, tận dụng các thể mạnh tính toán data visualization của R, viết biểu thức toán với Latex và có thể tự động hoá quá trình.

5.1 rmarkdownknitr

Đây là 2 package cung cấp khả năng tích hợp giữa ngôn ngữ mark up MarkdownR.

5.2 slidify

Soạn thảo presentation sử dụng Rrmarkdown

5.3 flexdashboard

Thực hiện các dashboard cho interactive data visualization. Đây là xu thế mới khi thực hiện các báo cáo khoa học định lượng.

6 Các tiện ích khác

6.1 devtools

Giúp phát triển và đóng gói các package R. Hệ sinh thái R là hệ sinh thái mã nguồn mở và người dùng có thể download trực tiếp mã nguồn của các package đang phát triển host trên các server, compile và install vào máy mình nhờ cú pháp đơn giản từ devtools như ví dụ đơn giản sau đây cho Github

devtools::install_git("<author_name>/<package>")