Tự học R Series: thu thập dữ liệu

Một trong những công việc quan trọng của một data scientist chính là thu thập dữ liệu (obtain data) và làm sạch dữ liệu (clean data). Dữ liệu sau khi được làm sạch sẽ là đầu vào (input) cho các bước xử lý và phân tích tiếp theo.

Chúng ta có thể thu thập dữ liệu từ nhiều nguồn khác nhau, từ web, từ API, từ các file log, từ database,…Dữ liệu cũng được tổ chức với rất nhiều định dạng khác nhau như text file, binary file, relation database, …

Để thu thu thập được những loại dữ liệu này, chúng ta sẽ dùng một số công cụ của R (built-in và cả các thư viện khác). Trong số này, H sẽ đề cập tới một số cách thu thập dữ liệu cơ bản hay gặp nhất, các bạn có thời gian đào sâu thêm nhé 🙂 Các bạn cũng nên tìm hiểu thêm về các định nghĩa raw data, tidy data nhé !!!

download.file: các bạn có thể dùng hàm này để download nội dung từ internet

fileUrl <- "https://people.sc.fsu.edu/~jburkardt/data/csv/addresses.csv"
download.file(fileUrl, destfile="address.csv")

read.csv: hàm này dùng để đọc file csv từ system lên memory.

read.csv("address.csv", stringsAsFactors = FALSE)

Ngoài ra còn các các hàm đọc csv khác như read.csv2,…

read.xlsx: hàm này dùng để đọc file Excel định dạng xls, xlsx.

library(xlsx)
read.xlsx("address.xlsx", sheetIndex=1, header=TRUE)

xmlTreeParse: đọc file XML

library(XML)
fileUrl <- "http://www.w3schools.com/xml/simple.xml"
doc <- xmlTreeParse(fileUrl)
rootNode <- xmlRoot(doc)
xmlName(rootNode)

Để access dữ liệu XML thì hơi phức tạp một chút, bạn cần phải nắm vị trí của dữ liệu cần lấy, kiểu như rootNode[1],…Ngoài ra để lấy dữ liệu đồng loạt các bạn có thể dùng các hàm apply như xmlSApply, xpathSApply

xmlSApply(rootNode, xmlValue)
xpathSApply(rootNode, "//name", xmlValue)

Một điểm hay là có thể dùng thư viện này để parse HTML (một dạng XML phổ biến).

doc <- htmlTreeParse(fileUrl)
scores <- xpathSApply(rootNode, "//li[@class='score']", xmlValue)

fromJSON, toJSON: dùng để đọc/ghi file JSON

library(jsonLite)
jsonData <- fromJSON("https://api.github.com/users/hoaihuongbk/repos")
names(jsonData)

data.table: dạng cấu trúc dữ liệu đặc biệt của data.frame. Một số function đọc dữ liệu từ file và trả về data.table như read.table, fread

library(data.table)
data <- fread("data.csv",sep=",")

Các bạn vừa cùng H điểm qua một số function dùng để thu thập dữ liệu từ những định dạng phổ biến. Có thời gian H sẽ viết thêm về các thư viện mới hơn với performance tốt hơn. 🙂

Chúc các bạn một tuần thật vui và hứng khởi nhé !!!

One thought on “Tự học R Series: thu thập dữ liệu

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.