You are on page 1of 6

Thực hành Trực quan hóa dữ liệu cơ bản trên

Bài TH 2: Lập trình cơ bản trong

1 Các phép toán và các hàm cơ bản trong


1.1 Các phép toán trong
Cộng +, trừ −, nhân ∗ và chia /;

1.2 Các phép toán logical


! : NOT & : AND | : OR;
Các phép toán so sánh: < , > , <= , >= , == , != ;

1.3 Một số hàm toán học thường dùng trong


▷ log() : tính logarithm cơ số exp (cơ số tự nhiên);

▷ log(x,a) : tính logarithm cơ số a của x, i.e. log a (x);

▷ exp(x) : hàm mũ của x, i.e. ex ;



▷ sqrt(x) : tính x;

▷ factorial(n) : tính giai thừa n! với n ∈ N;

▷ choose(n,x) : tính tổ hợp chập k của n, tức là Cnk ;

▷ floor(x) : trả ra số nguyên lớn nhất mà nhỏ hơn x ;

▷ ceiling(x) : trả ra số nguyên nhỏ nhất mà lớn hơn x ;

▷ round(x, digits = n) : làm tròn x đến n chữ số thập phân;

▷ sin() , cos() , tan() : các hàm lượng giác ;

▷ abs(x) : tính giá trị tuyệt đối của x ;

▷ x %/% y : lấy phần nguyên của phép chia x/y ;

▷ x % % y : lấy phần dư của phép chia x/y ;

1.4 Một số hàm toán học cho vector


Cho vector thực v ta có một số hàm cơ bản sau,
▷ sum(v) : tính tổng các giá trị trong vector v;

▷ mean(v) : tính trung bình của vector v;

▷ median(v) : tính trung vị của vector v;

▷ var(v) : tính phương sai của vector v;

▷ sort(v) : sắp xếp vector v theo thứ tự không giảm;

Bài thực hành 2 1 Bộ môn Xác suất-Thống kê


Thực hành Trực quan hóa dữ liệu cơ bản trên
2 Câu lệnh điều kiện: if
Cấu trúc câu lệnh if(...)else :
if ( condition ){
task 1 Remark: trong nhiều trường hợp ta không cần sử dụng else(...),
}
else {
task 2 i.e., KHÔNG bắt buộc luôn luôn phải dùng if - else cùng lúc.
}

Thí dụ: sử dụng câu lệnh điều kiện if(...)else, đoạn code sau sẽ kiểm tra và in ra màn hình R console
kết quả một số tự nhiên a cho trước là số chẵn (even number) hay số lẻ (odd number).
a <- 4
if (( a %% 2 )== 0 ){
cat (a , " is an even number ! \ n " ) # function cat () prints variables + string
} else {
cat (a , " is an odd number ! \ n " )
}

3 Vòng lặp: for, while, repeat


Cấu trúc vòng lặp for(...) :
for ( count _ variable in ( start _ loop _ number : end _ loop _ number ) ){
task
}

Thí dụ: sử dụng vòng lặp for(...){...}, đoạn code sau sẽ đếm xem có bao nhiêu số tự nhiên tính từ a
tới b mà chia hết cho 4.
a <- 1
b <- 1 0 0
count _ nb <- 0
for ( k in ( a : b )){
if (( k %% 4 )== 0 ){
count _ nb <- count _ nb + 1
}
}
print ( count _ nb )

Cấu trúc vòng lặp while(...) :


while ( condition ){
task
}

Thí dụ: tương tự thí dụ trên nhưng bây giờ ta sẽ sử dụng vòng lặp while(...){...}.
a <- 1
b <- 1 0 0
k <- a
count _ nb <- 0
while ( k <= b ){
if (( k %% 4 )== 0 )
{ count _ nb <- count _ nb + 1 }
k <- k + 1
}
print ( count _ nb )
■ Remark: Để ngắt vòng lặp: sử dụng lệnh break.

Bài thực hành 2 2 Bộ môn Xác suất-Thống kê


Thực hành Trực quan hóa dữ liệu cơ bản trên

4 Viết hàm function

Cấu trúc hàm function(...) :


ten _ ham <- function ( parameter _ 1 , parameter _ 2 , ... ) ){
task
}

Thí dụ: viết hàm đặt tên là my_count_func để đếm xem và trả về kết quả có bao nhiêu số tự nhiên tính từ
a tới b mà chia hết cho 4.
my _ count _ func <- function (a , b ){
count _ nb <- 0
for ( k in ( a : b )){
if (( k %% 4 )== 0 ){
count _ nb <- count _ nb + 1
}
}
return ( count _ nb )
}
##
my _ count _ func ( 1 ,1 0 0 )

5 Nhập, xử lý và xuất dữ liệu


5.1 Working directory
Trước khi thực hiện nhập hoặc load dữ liệu từ một file ta cần xác định và thiết lập địa chỉ đang làm việc
của .
• Để thiết lập địa chỉ thư mục làm việc (working directory), chẳng hạn trong thư mục "R_Lab" ở ổ đĩa D,
ta dùng câu lệnh setwd() như sau:
" setwd ( ' D :/ R _ Lab ' ) " hoặc vào " File " rồi chọn " Change dir " ;

• Còn để truy xuất địa chỉ thư mục làm việc hiện tại, ta dùng câu lệnh: getwd() ;

5.2 Workspace
Từ khi khởi động phần mềm (cửa sổ R console bắt đầu xuất hiện) cho đến khi thoát hoàn toàn khỏi
là một phiên làm việc. Tất cả những đối tượng tạo ra trong một phiên làm việc được lưu trong
workspace. Ta có thể lưu lại mọi thứ trong workspace ở một thời điểm này, rồi load lại workspace để tiếp
tục công việc ở một thời điểm sau.
save.image(’file_name.rda’) : lưu lại workspace ;
load(’file_name.rda’) : Tải/load workspace đã lưu (trong working directory hiện hành);
save(x , ’file_name.rda’) : lưu biến x với tên file "file_name.rda" vào thư mục làm việc hiện hành;
rm(x) : xóa biến x khỏi workspace hiện hành;
rm( list = ls() ) : xóa tất cả các biến ở workspace hiện hành;
ls() : liệt kê tất cả các biến ở workspace hiện hành;

Bài thực hành 2 3 Bộ môn Xác suất-Thống kê


Thực hành Trực quan hóa dữ liệu cơ bản trên

5.3 Nhập dữ liệu


• Nhập dữ liệu trực tiếp từ bằng lệnh edit(data.frame()). Chẳng hạn
mydf <- edit ( data . frame ())
sẽ mở một cửa sổ để nhập trực tiếp dữ liệu, khi đó ta nhập các biến cần thiết thuộc frame muốn tạo.

• Nhập từ một file text (file .txt), ta dùng lệnh read.table() .


Chẳng hạn, câu lệnh sau
mydata <- read . table ( ' D :/ R \_ Lab / data . txt ' , header = T , sep = " " )
sẽ đọc dữ liệu từ file ’solieu.txt’ rồi gán vào biến mydata.
Remark: nếu file ’solieu.txt’ đã có trong thư mục làm việc hiện hành thì không cần chỉ ra đường dẫn nữa.

• Nhập từ file excel (lưu ý file excel phải được lưu dưới dạng ’.csv’).
Chẳng hạn, load dữ liệu từ file excel có tên ’solieu.csv’ đã ở trong thư mục làm việc hiện hành như sau
mydata <- read . csv ( ' solieu . csv ' , header = F )

Nếu dữ liệu chứa trong file excel chưa phải là định dạng ’.csv’, ta cần mở file bằng Excel để lưu lại
dưới dạng ’.csv’ như sau:
vào Excel chọn File −→ Save as −→ chọn Save as type "CSV (Comma delimited)" ;

5.4 Xử lý dữ liệu
attach(data frame) : đưa một data frame vào workspace để xử lý;
subset(mydata, condition ) : tách dữ liệu từ mydata dưới điều kiện condition ;
merge(df1 , df2, by = ) : nhập hai dataframe df1 và df2 thành một;
Thí dụ, ta attach dataset mtcars và sau đó, trích ra dữ liệu của những chiếc xe thỏa mức tiêu thụ nhiên liệu
(mpg) lớn hơn hoặc bằng 20, như sau
attach ( mtcars )
mtcars
df <- subset ( mtcars , mpg >= 2 0 )

5.5 Xuất dữ liệu


• Định dạng đối tượng trong :
Ta dùng lệnh save() để lưu lại một đối tượng trong thành một tệp có định dạng ".rda" trong thư mục
làm việc hiện hành.
Chẳng hạn, ta có thể save lại dữ liệu là vector v vào một file có tên "v_vec.rda" trong thư mục làm việc
hiện hành như sau
save (v , file = " v _ vec . rda " )

• Trong package xlsx, có thể sử dụng hàm write.xlsx(df) để lưu một data frame có tên df trong
thành một workbook trong excel. Thí dụ
library ( xlsx )
write . xlsx ( df , outfile , col . Names = TRUE , row . names = TRUE ,
sheetName = " Sheet 1 " , append = FALSE )

Bài thực hành 2 4 Bộ môn Xác suất-Thống kê


Thực hành Trực quan hóa dữ liệu cơ bản trên

• Hàm write.table() dùng để lưu một đối tượng trong vào một tệp text (.txt) ở thư mục làm việc
hiện hành. Chẳng hạn, cú pháp sẽ có dạng như sau
write . table (x , outfile , sep = delimiter , quote = TRUE , na = " NA " )

trong đó x là đối tượng trong cần lưu, và outfile là tệp chứa đối tượng được lưu lại trong thư mục
làm việc hiện hành. Thí dụ
write . table ( mydata , " mydata . txt " , sep = " ," )
sẽ lưu dataset mydata vào một tệp có tên "mydata.txt" trong thư mục làm việc hiện hành với các dữ liệu
sẽ được ngăn cách bởi dấu phẩy (sep = ","). Còn nếu ta thay sep = "," bởi sep = "\t" khi đó các
dữ liệu trong tệp .txt sẽ được phân cách nhau bởi một khoảng trắng dấu tab.

6 Bài tập thực hành


4πr3
Bài 1. Cho biết thể tích hình cầu bán kính r > 0 là V = . Viết hàm đặt tên sphere_vol(r_vec) để
3
tính thể tích hình cầu tương ứng với các giá trị bán kính trong vector r_vec, và hàm này trả về giá trị là
một dataframe gồm hai cột trong đó cột "Radius" chứa các giá trị bán kính và cột "Volume" chứa giá trị
thể tích hình cầu tương ứng.

Bài 2. Tạo hai vector x = (1, 2, 5, 7, −3, 0, 5, 1, 5, 6) và y = (2, 2, 0, −5, 7, 8, 11, 9, 3, 2).
(a) Tạo vector u gồm những phần tử của x là số chẵn và vector v gồm những phần tử của y là số lẻ.
(b) Trích ra vector những phần tử lớn hơn 0 của x và vector khác gồm những phần tử lớn hơn 0 của y.
(c) Tính trung bình mẫu, phương sai mẫu và độ lệch chuẩn mẫu cho x và y.
(d) Sắp xếp vector x theo thứ tự tăng dần và sắp xếp vector y theo thứ tự giảm dần.

Bài 3. Load dữ liệu từ file data01.xls. Dùng lệnh điều kiện if và vòng lặp for để tạo ra vector Index
theo yêu cầu sau:
• Nếu Age ≤ 60 thì giá trị tương ứng trong vector Index là 0;
• Nếu 60 < Age ≤ 70 thì giá trị tương ứng trong vector Index là 1;
• Nếu 70 < Age ≤ 80 thì giá trị tương ứng trong vector Index là 2;
• Nếu 80 < Age thì giá trị tương ứng trong vector Index là 3;

Bài 4. File dữ liệu data11.xls chứa các số liệu về chiều cao của một loại cây trồng được ghi lại theo bảng
tần số dạng khoảng, trong đó cột a là cận dưới của khoảng, b là cận trên của khoảng và n là tần số tương
ứng của từng khoảng. Thực hiện các bước sau:
(a) Đọc dữ liệu từ file data11.xls, và gán vào một dataframe đặt tên là ex4_plants_height ;
(b) Viết một hàm với các tham số tương ứng với các biến a, b, n trong dataframe ex4_plants_height,
trả ra một list gồm các giá trị sau: chiều cao nhỏ nhất, chiều cao lớn nhất của cây, trung bình mẫu và
phương sai mẫu.

Bài 5. Đọc dữ liệu từ file data01.xls và gán vào data frame đặt tên là data1;
(a) Tính trung bình mẫu, phương sai mẫu và trung vị của các biến FPSA và TPSA;
(b) Tách những giá trị của biến FPSA có K = 0 và những giá trị của biến FPSA có K = 1;

Bài thực hành 2 5 Bộ môn Xác suất-Thống kê


Thực hành Trực quan hóa dữ liệu cơ bản trên

Bài 6. Cho một vector v = (v1 , v2 , ..., vn ) ∈ Rn , với n ≥ 1. Với A là một mệnh đề toán học,
(
1, nếu A đúng,
hàm chỉ (indicator function) cho bởi 1A := , (thí dụ 1{1≤1} = 1 và 1{2≤1} = 0).
0, nếu A sai,
Hàm tích lũy thực nghiệm của vector v được định nghĩa là

F : R −→ [0; 1]
1 X
x 7−→ F (x) := 1{u∈R:u≤x} (vj ).
n
1≤j≤n

(a) Viết hàm cdf_empirical(...) để tính hàm F (sinh viên tự xác định các tham số cần thiết của hàm).
(b) Sau đó, dùng hàm vừa viết áp dụng để tính cho vector v = (0.1, 0.2, 0.4, 0.05, 0.25).

Bài 7. Cho vector thực v = (v1 , v2 , ..., vn ) chứa n giá trị quan trắc (observations). Gọi qγ/100 phân vị mức
γ(%) của dữ liệu được xác định như sau, với 0 < γ < 100:
• Sắp xếp các giá trị quan trắc trong vector v theo thứ tự không giảm thu được v(1) , v(2) , ..., v(n) ;
q
• Tính chỉ số j = × n, khi đó
100
▷ nếu j là số tự nhiên, phân vị mức γ được xác định bởi qγ/100 = v(j) ;
v([j]) + v([j]+1)
▷ nếu j KHÔNG phải số tự nhiên, phân vị mức γ được xác định bởi qγ/100 = ;
2
(a) Viết hàm my_quantile(v, gamma) trả ra kết quả là phân vị mức gamma% của vector v;
(b) Áp dụng hàm my_quantile(v, gamma) vừa viết để tìm tứ phân vị của vector Age trong bài tập 3.

Bài thực hành 2 6 Bộ môn Xác suất-Thống kê

You might also like