Trường Đại Học Bách Khoa Tp Hồ Chí Minh Khoa Khoa Học và Kỹ Thuật Máy Tính R 1 Dẫn nhập Trong bài thực hành dưới đây, chúng ta sẽ làm quen với R Mục tiêu của bài thực hành là giúp sinh viên có kiến th[.]
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính R Dẫn nhập Trong thực hành đây, làm quen với R Mục tiêu thực hành giúp sinh viên có kiến thức việc sử dụng R phục vụ cho công việc nghiên cứu tương lai Tại dùng R? • R chương trình sử dụng rộng rãi để phân tích thống kê • R phần mềm miễn phí • Vẽ biểu đồ công bố tập san quốc tế Cài đặt Cho HĐH Windows: • Download cài đặt R từ www.r-project.org Phiên R 3.2.2 Sau cài đặt, R bắt đầu ứng dụng khác cho Windows Văn phạm R R phân biệt lệnh viết chữ hoa hay chữ thường Ví dụ, R phân biệt Library library Khi có chữ rời nhau, R thường dùng dấu chấm để thay vào khoảng trống, chẳng hạn data.frame, t.test, read.table Nếu gõ văn phạm, R cho prompt khác hay cho kết tùy theo lệnh Nếu lệnh không đúng, R cho thông báo ngắn khơng khơng hiểu Ví dụ, gõ > x R hiểu, cho prompt khác: > Nhưng gõ > Discrete Structures R báo lỗi với lệnh này, thông báo sau xuất hiện: Error: unexpected symbol in "Discrete Structures" > Văn phạm chung R lệnh (command) hay hàm (function) Theo sau hàm thông số mà phải cung cấp Ví dụ: > setwd("D:/DiscreteStructure/Lab1") setwd hàm, cịn "D:/DiscreteStructure/Lab1" thơng số hàm Để tra cứu thông tin chi tiết hàm R, ta dùng help(tenham) ?tenham Ví dụ, muốn tra cứu thông tin hàm plot(), ta thực sau > help(plot) Giáo trình Cấu Trúc Rời Rạc Trang 1/8 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính > ?plot R ngơn ngữ hướng đối tượng (object oriented language), nghĩa liệu R chứa object Dùng ký hiệu x myobject my object = == != !x x|y x&y Mô tả bé bé lớn lớn so sánh so sánh khác khác x x Hoặc y x Và y Bảng 2: Các phép tốn logic Ví dụ 1: > (2-5)*2 + - 2^2 [1] -7 > 2 sqrt(9) [1] > exp(2) [1] 7.389056 Tạo thao tác với vectors R Để tạo vector R ta sử dụng c() (viết tắt chữ concatenation) Ví dụ tạo vector x = (2, 4, −4, 7, 10, 11), ta thực > x x*x [1] 16 16 49 100 121 > x/x [1] 1 1 1 Để tạo vector có dạng chuỗi số, ta dùng ":" seq() Ví dụ, muốn tạo vector y = (1, 2, 3, 4, 5) câu lệnh > y y seq(0, 5, length=5) [1] 0.00 1.25 2.50 3.75 5.00 Giáo trình Cấu Trúc Rời Rạc Trang 4/8 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính để tạo vector gồm 10 phần tử số cách [0, 5] Một hàm hữu ích khác rep() (viết tắt từ replicate)cho phép lặp lại phần tử vector > rep(1:4, 2) [1] 4 > rep(1:4, each = 2) [1] 1 2 3 4 > rep(1:4, c(2,1,2,1)) [1] 1 3 Khi muốn truy xuất phần tử có vị trí i vector x, ta dùng x[i] Ví dụ, ta muốn truy xuất phần tử thứ vector x, ta viết sau > x x[4] [1] Trong trường hợp, muốn truy xuất phần tử vector cho chúng thỏa điều kiện sử dụng x[điều kiện], ví dụ truy xuất phần tử chẵn vector x ta gõ > x[x %% == 0] [1] -4 10 Muốn xếp phần tử vector x ta dùng hàm sort() > sort(x, decreasing=TRUE) [1] 11 10 -4 > sort(x, decreasing=FALSE) [1] -4 10 11 Muốn biết độ dài vector, ta dùng hàm length() > length(x) [1] Muốn tính tổng phần tử vector x, ta dùng hàm sum() > sum(x) [1] 30 10 Cách nhập liệu 10.1 Cách nhập trực tiếp hàm c() Chúng ta dùng hàm c() để nhập liệu Mỗi số liệu cách dấu phẩy Ví dụ 3: có liệu tên điểm thi đại học 10 bạn sau An Binh Cuong Dung Hue Hung Khanh Lan Mai Nhung 25.5 26.0 25.5 28.5 27.0 27.0 27.5 29.0 28.0 28.0 Giáo trình Cấu Trúc Rời Rạc Trang 5/8 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Chúng ta nhập liệu vào R sau > name grade data data Kết name grade An 25.5 Binh 26.0 Cuong 25.5 Dung 28.5 Hue 27.0 Hung 27.0 Khanh 27.5 Lan 29.0 Mai 28.0 10 Nhung 28.0 10.2 Nhập liệu từ Excel Để nhập liệu từ phần mềm Excel, ta cần tiến hành bước • Bước 1: Lưu liệu dạng "csv" • Bước 2: Dùng R (lệnh read.csv) để nhập liệu Ví dụ 4: Chúng ta có liệu dạng excel có tên diemthi.xls đặt thư mục D:\DS\Lab1 name An Binh Cuong Dung Hue Hung Khanh Lan Mai Nhung grade 25.5 26.0 25.5 28.5 27.0 27.0 27.5 29.0 28.0 28.0 Bảng 4: Dữ liệu từ Excel Bước 1: Ta lưu lại dạng csv, diemthi.xls thành diemthi.csv Bước 2: vào R lệnh sau Giáo trình Cấu Trúc Rời Rạc Trang 6/8 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính > setwd("D:/DS/Lab1") > dt dim(data) [1] 10 R cho thấy có 10 dòng cột Muốn biết biến số tên gì, ta dùng lệnh names() > names(data) [1] "name" "grade" Trong biến grade, muốn biết có bạn đạt số điểm, ta dùng lệnh table() > table(data$grade) 25.5 26 27 27.5 2 28 28.5 29 Kết cho thấy có bạn 25.5, bạn 26, 11 Xử lý thống kê Để tính đặc trưng biến ngẫu nhiên (mẫu ngẫu nhiên, vector) ta dùng hàm sau Hàm mean() var() sd() median() min() max() range() summary() Mơ tả trung bình mẫu phương sai mẫu độ lệch chuẩn mẫu trung vị mẫu giá trị nhỏ giá trị lớn miền giá trị tổng hợp sơ lược mẫu Bảng 5: Các hàm thống kê Tiếp tục ví dụ 3, ta muốn tính giá trị trung bình điểm thi đại học 10 bạn đó, ta gõ sau > mean(data$grade) [1] 27.2 12 Nội dung thực hành Câu • Tạo vector có tên vector1 gồm phần tử (2, 2, -1, 4, 5, 3, 4, -1, 5, 0) • Tạo vector có tên vector2 gồm phần tử (3, 0, -2, 4, 1, 2, 4, 3, 5, 1) Giáo trình Cấu Trúc Rời Rạc Trang 7/8 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính • Thực phép cộng, trừ, nhân, chia, lũy thừa cho hai vector vector1 vector2 • Tổng phần tử vector1 có bé tổng phần tử vector2 hay khơng? • Truy xuất phần tử chia dư vector vector2 • Gán biến sub = vector1 - vector2 Đếm số lượng phần tử vector sub • Sắp xếp vector1 theo thứ tự tăng dần vector2 theo thứ tự giảm dần Câu Thống kê số lượng "likes" (thích) trang cá nhân mạng xã hội facebook 25 người ngày cho sau name P1 P2 P3 P4 P5 likes 29 23 25 15 16 name P6 P7 P8 P9 P10 likes 20 16 17 13 name P11 P12 P13 P14 P15 likes 16 21 23 20 16 name P16 P17 P18 P19 P20 likes 18 25 19 19 13 name P21 P22 P23 P24 P25 likes 13 19 17 29 13 Bảng 6: Số lượng lượt thích trang cá nhân facebook 25 người ngày • Nhập liệu từ bảng vào R với hai cột liệu có tên name likes Sau nhập hai cột vào đối tượng có tên fb • Hãy tính giá trị trung bình, phương sai, độ lệch chuẩn, trung vị, giá trị lớn nhất, giá trị nhỏ số lượng "likes" 25 người • Vẽ biểu đồ phân bố (histogram) cho số lượng "thích" 25 người (Gợi ý: dùng lệnh help để tra cứu cách dùng hàm hist) Giáo trình Cấu Trúc Rời Rạc Trang 8/8 ... D:\DiscreteStructures\Lab1 Chú ý, R dùng forward slash "/" backward slach "\" Để biết R làm việc directory nào, ta viết sau: > getwd() Các phép tốn số học logic Giáo trình Cấu Trúc R? ??i R? ??c Trang 2/8 Trường... D:\DiscreteStructures\Lab1 Để R biết liệu nằm đâu, ta sử dụng lệnh setwd (set working directory) sau: > setwd("D:/DiscreteStructures/Lab1") Lệnh báo cho R biết liệu chứa directory có tên D:\DiscreteStructures\Lab1... TRUE Các hàm số Giáo trình Cấu Trúc R? ??i R? ??c Trang 3/8 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Phép tốn abs(x) sqrt(x) sqrt(x,y) ceiling(x) floor(x) trunc(x) round(x,