Professional Documents
Culture Documents
Tien Xu Ly Du Lieu
Tien Xu Ly Du Lieu
. . . .
. .
. . . .
. .
. . . .
. .
. . . .
. .
. . . .
. .
. . . .
. .
. . . .
• Biết cách thực hiện phép toán và dùng hàm tính toán đơn giản.
22
3.1. Phép toán, hàm tính toán và những tính toán đơn giản 23
Nhập dữ liệu, tính toán trên dữ liệu và xử lí dữ liệu là những thao tác không thể thiếu trong thống
kê. Trong phần này, ta sẽ xem cách nhập dữ liệu cũng như những thao tác đầu tiên về xử lí dữ
liệu trên R.
3.1 Phép toán, hàm tính toán và những tính toán đơn giản
Những phép toán trong R giúp thực hiện các tính toán. Bảng sau cho ta một số phép toán phổ
biến trong R:
Ta minh họa một vài thao tác sử dụng những phép toán này:
Các phép toán này không chỉ áp dụng cho những phần tử đơn lẻ, mà có thể thực hiện trên một
dãy gồm nhiều phần tử (véc tơ):
> x = c(1, 3, 5, 7, 9)
> y = c(2, 4, 6, 8, 10)
Ngoài những phép toán, R cung cấp rất nhiều hàm tính toán để người sử dụng có thể thực hiện
những tính toán khác nhau. Bảng dưới đây liệt kê một số hàm tính toán đơn giản trong R, những
hàm này có thể áp dụng cho một số hay một véc tơ gồm nhiều số:
x là một véc tơ số
Hàm Công dụng
abs(x) Tính giá trị tuyệt đối các số trong x
sqrt(x) Tính căn bậc hai của các số trong x
floor(x) Tính sàn của các số trong x
ceiling(x) Tính trần của các số trong x
round(x,digits=k) Tính số làm tròn của các số trong x đến k chữ số thập phân
exp(x) Tính lũy thừa cơ số e của các số trong x
log(x, base=a) Tính logarit cơ số a của các số trong x, mặc định cơ số e
cos(x),sin(x),tan(x) Tính cos, sin, tg của các số trong x
choose(n,x) Tính số tổ hợp chập x của n
sum(x) Tính tổng các số trong x
prod(x) Tính tích các số trong x
max(x) Đưa ra số lớn nhất của x
min(x) Đưa ra số nhỏ nhất của x
range(x) Đưa ra số nhỏ nhất và lớn nhất của x
cumsum(x) Tính tổng tích lũy các số trong x
cumprod(x) Tính tích tích lũy các số trong x
cummax(x) Tính số lớn nhất tính đến từng vị trí của từng số trong x
cummin(x) Tính số nhỏ nhất tính đến từng vị trí của từng số trong x
3.1. Phép toán, hàm tính toán và những tính toán đơn giản 25
Bạn đọc sẽ hiểu kĩ hơn cách dùng những hàm này qua đoạn lệnh sau:
Trong đó
> x = c(1,2,3,4,5,6,7,8,9)
> A = matrix(x, nrow=3)
> A
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
Khi khai báo tham số byrow = T các phần tử của véc tơ x sẽ được sắp xếp theo hàng:
Các phép toán đơn giản trên ma trận được thực hiện như sau:
> A - B
[,1] [,2] [,3]
[1,] 0 2 4
[2,] -2 0 2
[3,] -4 -2 0
> #Nhân ma trận với một số
> 2*A
[,1] [,2] [,3]
[1,] 2 8 14
[2,] 4 10 16
[3,] 6 12 18
> #Nhân hai ma trận với nhau
> A %*% B
[,1] [,2] [,3]
[1,] 66 78 90
[2,] 78 93 108
[3,] 90 108 126
R cung cấp cho ta một số hàm đơn giản để tính định thức, hạng hay véc tơ riêng của ma trận:
$vectors
[,1] [,2] [,3]
[1,] -0.4645473 -0.8829060 0.4082483
[2,] -0.5707955 -0.2395204 -0.8164966
[3,] -0.6770438 0.4038651 0.4082483
Ngoài ra bằng những hàm đơn giản ta có thể tính được ma trận nghịch đảo của một ma trận và
từ đó tìm được nghiệm của một hệ phương trình Crammer.
Xét hệ phương trình tuyến tính
$
& x y + z = 1
% 2xx +
2y + 2z = 3
3y 5z = 0.
Nhận thấy ma trận hệ số của hệ có định thức bằng 4 khác không nên có nghịch đảo. Từ đó hệ
trên là hệ crammer và có nghiệm duy nhất dạng X = A1 B. Các nghiệm này được tính toán
trên R như sau:
[2,] -1 2 2
[3,] 2 -3 -5
> #Nhập ma trận hệ số tự do
> B = matrix(c(1,3,0),nrow=3)
> #Định thức của ma trận hệ số
> det(A)
[1] -4
Từ những kết quả tính toán, ta thấy hệ phương trình đã cho có nghiệm duy nhất là: x = 7,
y = 5, 5 và z = 0, 5.
Chú ý: Để thực hiện những tính toán chuyên biệt về ma trận, ta có thể cài đặt và sử dụng gói
matrix.
Chú ý: Khi nhập dữ liệu bằng hàm c hoặc hàm scan, ta nên lưu ý sự khác biệt của hai hàm
này như sau:
• Hàm c có thể nhập dữ liệu dạng kí tự nhưng hàm scan chỉ nhập được dữ liệu dạng số.
> GioiTinh = c("Nam", "Nu", "Nu", "Nam")
> GioiTinh
[1] "Nam" "Nu" "Nu" "Nam"
• Hàm scan, trong một số trường hợp, giúp ta có thể copy dữ liệu từ những cột trong những
tệp có sẵn từ excel file, text file,... nhưng ta không áp dụng được những thao tác kiểu này
cho hàm c.
Ta cũng có thể thêm vào hay bớt đi một số phần tử của véc tơ:
hoặc cũng có thể ghép nhiều véc tơ dữ liệu lại với nhau:
Tương tự, để ghép n véc tơ dữ liệu có tên x1, x2, . . . , xn lại với nhau theo thứ tự này, ta dùng
hàm c như trên:
30 Chương 3. Dữ liệu và một số thao tác tiền xử lý dữ liệu
Ngoài cách truy cập vào địa chỉ, ta có thể sửa, thêm, bớt phần tử của véc tơ bằng hàm edit.
Chẳng hạn để biên tập véc tơ SoLoi và lưu kết quả vào véc tơ có tên SoLoi3 ta làm như sau:
> SoLoi3=edit(SoLoi)
Màn hình làm việc sẽ xuất hiện cửa sổ biên tập dữ liệu R Editor. Tại cửa sổ này ta trực tiếp
chỉnh sửa, thêm, bớt phần tử của véc tơ.
Và kết thúc bằng cách đóng cửa sổ biên tập dữ liệu, xác nhận có lưu những thay đổi đã thực
hiện hay không:
x là một véc tơ
Lệnh Công dụng
length(x) Tính số phần tử của x
x[i] Đưa ra phần tử thứ i của x
x[-i] Đưa ra mọi phần tử trừ phần tử thứ i của x
x[1:k] Đưa ra k phần tử đầu của x
x[(length(x)- Đưa ra k phần tử cuối
k+1):length(x)]
x[c(i,j,k)] Đưa ra phần tử ở vị trí i, j , k của x
3.3. Véc tơ dữ liệu 31
Đoạn lệnh sau cho ta một số thông tin khi truy cập vào véc tơ chỉ số lỗi của 10 trang đánh máy
trên:
Ta có thể kết hợp hai véc tơ SoLoi và PhanLoai thành một bảng dữ liệu (data frame) bằng
hàm data.frame:
6 0 IT
7 7 NHIEU
8 0 IT
9 2 BT
10 7 NHIEU
Dữ liệu trên có thể được nhập thành một bảng (data frame) trong R bằng cách nhập từng cột vào
một véc tơ rồi ghép chúng lại với nhau bằng hàm data.frame:
trong đó
5 166 53 Nam
> is.data.frame(DuLieu)
[1] TRUE
Ngoài cách trên ta có thể nhập dữ liệu vào bảng dữ liệu trong R bằng cách sử dụng hàm edit.
Để nhập dữ liệu theo cách này, tại cửa sổ dòng lệnh ta gõ lệnh:
Sau dòng lệnh này R sẽ xuất hiện cửa sổ biên tập dữ liệu (Data Editor) để nhập dữ liệu vào
từng ô tương ứng trong hình sau:
Để nhập dữ liệu, chẳng hạn cho cột ChieuCao, đầu tiên nhấp chuột vào ô var1 để mở cửa sổ
Variable editor, tại cửa sổ này chọn tên cột và kiểu dữ liệu cho cột:
và sau đó nhập dữ liệu vào trong các ô của cột. Nhập dữ liệu cho các cột còn lại cũng được tiến
hành tương tự.
Để kết thúc việc nhập dữ liệu, ta đóng cửa sổ biên tập dữ liệu và khi đó trong cửa sổ dòng lệnh
R Console đã có một đối tượng tên là DuLieu.
> #Đổi tên cho các cột bằng hàm colnames hoặc names
> colnames(DuLieu) = c("CC","CN","GT")
> DuLieu
CC CN GT
1 170 65 Nam
2 165 50 Nam
3 150 45 Nu
4 158 60 Nu
5 166 53 Nam
> DuLieu
ChieuCao CanNang GioiTinh
1 170 65 Nam
2 165 50 Nam
3 150 45 Nu
4 158 60 Nu
5 166 53 Nam
> # Sửa chiều cao của sinh viên thứ 3 thành 160 (sửa ô ở dòng 3, cột 1)
> DuLieu[3,1] = 160
> DuLieu
ChieuCao CanNang GioiTinh
1 170 65 Nam
2 165 50 Nam
3 160 45 Nu
4 158 60 Nu
5 166 53 Nam
Như đã nói trên, địa chỉ DuLieu[3,1] có thể khai báo theo những cách khác: DuLieu["3","ChieuCao"]
hoặc DuLieu[3,"ChieuCao"] hoặc DuLieu["3",1]
Khi muốn thêm vào bảng dữ liệu một số cột, chẳng hạn thêm cột quê quán và tuổi của 5 sinh
viên nói trên, ta làm như sau:
Hoặc ta cũng có thể ghép thêm cột vào bảng dữ liệu theo cách sau:
36 Chương 3. Dữ liệu và một số thao tác tiền xử lý dữ liệu
Việc thêm một số dòng vào bảng dữ liệu được làm tương tự như đối với cột. Ngoài ra, ta có thể
thực hiện việc thêm cột hay dòng vào bảng dữ liệu nhờ hàm cbind (cho cột) và rbind (cho
dòng). Cách dùng hai hàm này được minh họa qua đoạn lệnh sau:
> DuLieu = data.frame(ChieuCao, CanNang, GioiTinh)
> #Ghép thêm cột quê quán và tuổi
> DuLieu = cbind(DuLieu, QueQuan, Tuoi)
> DuLieu
ChieuCao CanNang GioiTinh QueQuan Tuoi
1 170 65 Nam HaNoi 23
2 165 50 Nam QuangNinh 22
3 150 45 Nu NgheAn 20
4 158 60 Nu NamDinh 25
5 166 53 Nam LangSon 19
> #Ghép thêm hai dòng cho thông tin của 2 sinh viên
> DuLieu = rbind(DuLieu, DuLieuThem)
> DuLieu
ChieuCao CanNang GioiTinh QueQuan Tuoi
1 170 65 Nam HaNoi 23
2 165 50 Nam QuangNinh 22
3 150 45 Nu NgheAn 20
4 158 60 Nu NamDinh 25
5 166 53 Nam LangSon 19
6 150 48 Nu CaoBang 21
7 170 70 Nam HaNoi 19
Sử dụng địa chỉ của ô, dòng, cột để thay đổi, thêm hoặc bớt dữ liệu vào bảng rất tiện lợi đối với
những bảng dữ liệu cỡ lớn. Đối với bảng dữ liệu cỡ nhỏ, ta có thể sử dụng hàm edit hoặc dùng
hàm fix để thực hiện các thao tác trên. Chẳng hạn, để sửa bảng DuLieu, ta làm như sau:
> DuLieu = edit(DuLieu)
> #Hoặc
> fix(DuLieu)
Khi đó dữ liệu trong bảng DuLieu sẽ xuất hiện trên cửa sổ R Data Editor cho phép ta tiến
hành những thao tác biên tập theo ý muốn. Việc biên tập sẽ kết thúc sau khi cửa sổ này được
đóng lại.
3.4. Bảng dữ liệu 37
Đối với hàm edit, bảng dữ liệu sau khi chỉnh sửa cần được đặt tên (kể cả khi dùng lại tên cũ),
còn hàm fix tự động cập nhật những thay đổi vào bảng dữ liệu cũ, việc đặt tên chỉ có ý nghĩa
sao chép bảng dữ liệu để tạo ra một đối tượng có cùng nội dung nhưng với tên gọi khác.
Trong ví dụ trên, bảng dữ liệu sau khi thay đổi vẫn giữ tên DuLieu, nếu ta muốn phân biệt bảng
dữ liệu ban đầu và bảng dữ liệu sau khi biên tập ta có thể làm như sau:
> DuLieu
ChieuCao CanNang GioiTinh
1 170 65 Nam
2 165 50 Nam
3 150 45 Nu
4 158 60 Nu
5 166 53 Nam
Đoạn lệnh sau cho một số thông tin của nhóm sinh viên khi truy cập vào bảng DuLieu.
> #Tên các cột
> names(DuLieu)
[1] "ChieuCao" "CanNang" "GioiTinh"
> #Số dòng và số cột
> dim(DuLieu)
[1] 5 3
Ta cũng có thể đưa ra những phần tử trong bảng dữ liệu thỏa mãn một hoặc một số điều kiện
nào đó bằng cách sử dụng hàm subset. Chẳng hạn để lấy dữ liệu về những sinh viên nữ, ta
thực hiện:
> subset(DuLieu, GioiTinh == "Nu")
ChieuCao CanNang GioiTinh
3 150 45 Nu
4 158 60 Nu
Để đưa ra những phần tử của bảng dữ liệu thỏa mãn một số điều kiện, ta dùng các toán tử logic
để kết hợp các điều kiện với nhau. Ví dụ muốn lấy dữ liệu của những sinh viên nam có chiều
cao trên 160, ta thực hiện:
> subset(DuLieu, GioiTinh == "Nam" & ChieuCao > 160)
ChieuCao CanNang GioiTinh
1 170 65 Nam
5 166 53 Nam
Một thao tác thường gặp trên bảng dữ liệu là lấy ra dữ liệu ở một cột nào đó. Ngoài cách sử
dụng địa chỉ của cột như trong ví dụ trên, ta có thể sử dụng trực tiếp tên cột để truy cập vào các
cột dữ liệu. Tuy nhiên, với cột ChieuCao:
3.4. Bảng dữ liệu 39
> ChieuCao
Error: object 'ChieuCao' not found
R báo lỗi vì ChieuCao hiện tại là một cột trong đối tượng DuLieu chứ không phải là một đối
tượng đang được làm việc trực tiếp. Để lấy ra cột ChieuCao ta có thể làm theo một số cách
sau:
• Sử dụng toán tử $:
> DuLieu$ChieuCao
[1] 170 165 150 158 166
> attach(DuLieu)
> ChieuCao
[1] 170 165 150 158 166
Hàm attach giúp truy cập vào cột dữ liệu trong một bảng dữ liệu bằng tên cột, để kết thúc
công việc này, ta dùng hàm detach:
> detach(DuLieu)
> ChieuCao
Error: object 'ChieuCao' not found
> DuLieuMoi
ChieuCao CanNang GioiTinh
1 170 65 Nam
2 165 50 Nam
3 150 45 Nu
4 158 60 Nu
5 166 53 Nam
6 160 50 <NA>
> na.omit(DuLieuMoi)
ChieuCao CanNang GioiTinh
1 170 65 Nam
2 165 50 Nam
3 150 45 Nu
4 158 60 Nu
5 166 53 Nam
và kết quả cho ta thấy R loại bỏ toàn bộ dòng chứa dữ liệu trống.
40 Chương 3. Dữ liệu và một số thao tác tiền xử lý dữ liệu
Trong đó
Chẳng hạn để lưu bảng dữ liệu có tên DuLieu mà chúng ta vừa tạo ra trên đây ta thực hiện như
sau:
Như vậy ta đã tạo ra một tệp có tên SinhVien.rda tại thư mục ThucHanhXSTKTrenR trong ổ F
của máy tính.
Ta cũng có thể lưu nhiều đối tượng dữ liệu trong cùng một tệp:
Khi cần lấy dữ liệu được lưu trong một tệp .rda, ta dùng hàm load tại cửa sổ R Console.
Giả sử ta cần lấy dữ liệu được lưu trong tệp NhieuDL.rda có trong thư mục ThucHanhXSTK-
TrenR trong ổ F, ta làm như sau:
Trong trường hợp này, R báo cho ta biết có 2 đối tượng dữ liệu có tên là SoLoi và DuLieu
được lưu trong tệp đã cho. Từ đây chúng ta có thể sử dụng bất cứ tập dữ liệu nào trong số đó.
trong đó
Đoạn lệnh sau minh họa cho ta những dãy số tạo từ hàm seq với những cách sử dụng tham số
khác nhau:
> # Tạo một dãy số xuất phát từ 2, bị chặn trên bởi 5.3, cách nhau 0.5
> seq(2, 5.3, 0.5)
[1] 2.0 2.5 3.0 3.5 4.0 4.5 5.0
> # Tạo một dãy số độ dài 8, bắt đầu từ 4 cách nhau 3
> seq(length = 8, from = 4, by = 3)
[1] 4 7 10 13 16 19 22 25
> # Tạo một dãy số độ dài 5, cách đều nhau từ 4 đến 6
> seq(length = 5, from = 4, to = 6)
[1] 4.0 4.5 5.0 5.5 6.0
Khi các phần tử trong dãy cách nhau 1, ta có thể làm như sau:
> seq(1,10)
[1] 1 2 3 4 5 6 7 8 9 10
> # hoặc
> 1:10
[1] 1 2 3 4 5 6 7 8 9 10
rep(x, times)
trong đó
Cách dùng hàm rep và các tham số của nó được minh họa qua đoạn lệnh sau:
trong đó
> #Tạo dãy gồm bậc 1, 2 mỗi bậc lặp lại 5 lần
> gl(2, 5)
[1] 1 1 1 1 1 2 2 2 2 2
Levels: 1 2
> #Tạo dãy gồm bậc 1, 2 mỗi bậc lặp lại 5 lần, chiều dài 12
> gl(2, 5, length=12)
[1] 1 1 1 1 1 2 2 2 2 2 1 1
Levels: 1 2
> #Tạo biến gồm bậc a, b, c mỗi bậc lặp lại 2 lần, chiều dài 10
> gl(3, 2, length=10, labels=c("a","b","c"))
[1] a a b b c c a a b b
Levels: a b c
read.table(file, header)
trong đó
header tham số logic TRUE/FALSE chỉ dòng đầu tiên trong dữ liệu có/không
phải tên của các cột, mặc định header = FALSE.
Chú ý: Trong trường hợp khai báo tham số header=F hoặc không khai báo tham số này (khi
đó theo mặc định header=F) R sẽ hiểu rằng các cột dữ liệu chưa có tên và R tự đặt tên cho
các cột như sau:
Trường hợp này, ta cần khai báo lại header = T để đọc dữ liệu đúng.
read.csv(file, header)
trong đó
Giả sử trong thư mục F:/ThucHanhXSTKTrenR có một tệp dữ liệu tên là DuLieuFast-
Food.xls, ta đổi tệp thành DuLieuFastFood.csv như sau:
• Mở tệp DuLieuFastFood.xls;
Tại cửa sổ R Console dữ liệu lưu trong tệp DuLieuFastFood.csv được tải ra như sau:
read.spss(file, to.data.frame)
trong đó
Chú ý:
• Trong tất cả các trường hợp trên, sau khi dữ liệu được đọc từ những tệp có sẵn, ta có thể
lưu đối tượng FastFood dưới dạng tệp .rda để xử lí sau này bằng hàm save
> setwd("F:/ThucHanhXSTKTrenR")
> save(FastFood, file = "DuLieuFastFood.rda")
• Bạn đọc cần phân biệt tên tệp chứa dữ liệu và tên dữ liệu tại cửa sổ R Console. Trong
những ví dụ trên, dữ liệu đã được lấy ra và lưu vào đối tượng có tên FastFood. Mọi
thao tác sau đó trên dữ liệu sẽ được thực hiện trên đối tượng này chứ không phải trên tệp
chứa dữ liệu ban đầu.
trong đó
x véc tơ gồm những phần tử dùng để chọn mẫu, hoặc một số nguyên
dương.
size số nguyên dương chỉ số phần tử trong mẫu.
replace tham số logic, TRUE/FALSE chỉ việc chọn mẫu có/không hoàn lại, mặc
định replace=FALSE.
prob véc tơ cho biết xác suất được chọn của những phần tử trong x.
Đoạn lệnh sau cho ta một số kết quả chọn ngẫu nhiên ra 10 phần tử từ tổng thể gồm 200 phần
tử được đánh số từ 1 tới 200:
Giả sử ta có một hộp gồm 3 quả bóng: xanh (X), đỏ (D), vàng (V). Tiến hành chọn (có hoàn lại)
ngẫu nhiên 5 quả bóng, kết quả có thể là:
> sample(c("X","D","V"), 5, replace=T)
[1] "X" "V" "X" "D" "X"
Chọn ra 5 phần tử từ tổng thể gồm 3 phần tử mà xác suất được chọn của chúng lần lượt là 0.5,
0.3 và 0.2:
Chú ý:
• Vì việc chọn mẫu là ngẫu nhiên nên có thể cùng một lệnh chọn mẫu nhưng với những lần
chọn khác nhau cho ta kết quả là khác nhau. Trong trường hợp muốn cố định mẫu được
chọn để dùng lại trong các lần sau, ta dùng hàm set.seed(n), trong đó n là một số
nguyên dương dùng để cố định mẫu.
> #Đặt tên mẫu
> set.seed(20100612)
> sample(1:200, 10)
[1] 156 176 140 55 78 59 120 45 185 73
> #Không gọi lại tên mẫu, kết quả là một mẫu khác
> sample(1:200, 10)
[1] 195 191 161 150 111 158 41 71 103 199
> #gọi lại tên mẫu và được mẫu như cũ
> set.seed(20100612)
> sample(1:200, 10)
[1] 156 176 140 55 78 59 120 45 185 73
• Hàm sample cho ta cách chọn mẫu từ một véc tơ. Trong trường hợp muốn chọn mẫu
từ một nhóm đối tượng có dữ liệu chứa trong một bảng dữ liệu, đầu tiên ta áp dụng hàm
sample cho véc tơ chỉ số thứ tự của các đối tượng, sau đó lấy từ bảng ra những quan sát
có thứ tự đã chọn được.
Chẳng hạn với bảng DuLieu gồm thông tin của 5 sinh viên cho trong phần trước, để chọn
ngẫu nhiên ra 3 sinh viên từ bảng này, ta thực hiện như sau:
> DuLieu
ChieuCao CanNang GioiTinh
1 170 65 Nam
2 165 50 Nam
3 150 45 Nu
4 158 60 Nu
5 166 53 Nam
> #Chọn thứ tự các sinh viên trong mẫu
> Mau = sample(1:5, 3)
> Mau
[1] 4 1 3
> #Lấy ra những sinh viên với thứ tự trong mẫu
> DLMau = DuLieu[Mau, ]
> DLMau
ChieuCao CanNang GioiTinh
4 158 60 Nu
1 170 65 Nam
3 150 45 Nu
3.8. Chọn mẫu ngẫu nhiên 47
BÀI TẬP
III.1. Giả sử bạn theo dõi số tiền (đơn vị nghìn đồng) trong hóa đơn điện thoại hàng tháng theo
thứ tự từ tháng 1 đến tháng 12 trong năm vừa qua như sau:
198 185 223 221 207 203 180 195 222 177 214 216
III.2. Dùng dữ liệu TienDT trên để thực hiện tiếp những yêu cầu sau:
a. z x, x + z, xz, z/x
b. x + 1, y 2, length(x), length(y), x + y
c. sum(x ¡ 5) và sum(x[x ¡ 5])
III.4. Dưới đây là thông tin về 8 sinh viên mới ra trường của một khóa học:
Thứ tự Lương khởi điểm Giới tính Xếp loại tốt nghiệp Tuổi
1 6.0 Nam K 22
2 5.0 Nu K 25
3 4.5 Nam TB 23
4 3.8 Nu K 22
5 8.0 Nu G 22
6 12.0 Nam G 23
7 4.0 Nam TB 22
8 5.0 Nu TB 24
48 Chương 3. Dữ liệu và một số thao tác tiền xử lý dữ liệu
a. Nhập dữ liệu vào một bảng (đặt tên là SinhVien) gồm các cột TT, Luong, GioiTinh, Tot-
Nghiep, Tuoi.
d. Đưa ra danh sách lương khởi điểm của nhóm sinh viên nữ.
f. Đưa ra danh sách những sinh viên có lương khởi điểm trên 6 triệu/tháng.
g. Cho biết các thông tin về những người có lương cao nhất trong danh sách.
h. Thêm vào danh sách một sinh viên nam tốt nghiệp xếp loại giỏi, lương khởi điểm 7.5 triệu
nhưng không có thông tin về tuổi.
i. Thêm vào bảng trên một cột điểm khóa luận tốt nghiệp của các sinh viên trên theo thứ tự như
sau: 8, 7.5, 7, 7, 9, 9.5, 8, 8, 9.
j. Cho biết dữ liệu trong từng cột được đo bằng thang đo nào?
III.5. Tệp dữ liệu BaiTap6.rda lưu thông tin của một nhóm học sinh về giới tính (GioiTinh),
lớp (Lop), tuổi (Tuoi), nơi ở (NoiO), học lực (HocLuc), mức độ yêu thích thể thao (TheThao)
và đánh giá hình thức (HinhThuc). Hãy lấy tệp dữ liệu và thực hiện các yêu cầu sau:
a. Cho biết dữ liệu trong từng cột được đo bằng thang đo nào?
b. Cho biết tập dữ liệu này có bao nhiêu cột, bao nhiêu dòng?
f. Tính tỷ lệ học sinh có mức độ yêu thích thể thao là 4. Tính tỷ lệ này trong nhóm học sinh
nam, trong nhóm học sinh nữ.
III.6. Trong tệp HocSinh.rda, hãy chọn ngẫu nhiên 50 học sinh và lấy ra tất cả thông tin về 50
người đó. Lưu dữ liệu dưới dạng tệp .rda.
III.7.
d. Tạo dãy số trong đó có các giá trị 1, 2, 3, 4 lần lượt lặp lại 10 lần.
3.8. Chọn mẫu ngẫu nhiên 49
f. Tạo biến thứ bậc gồm 3 bậc, mỗi bậc lặp 4 lần.
g. Tạo biến thứ bậc gồm 4 bậc, mỗi bậc lặp 4 lần, chiều dài biến bằng 15.
h. Tạo biến thứ bậc gồm 3 bậc, số lần lặp lại tương ứng là 2, 5, 8 với ký hiệu a, b, c.
III.9. Tung một đồng xu 50 lần. Mô phỏng phép thử và đếm số mặt sấp.
III.10. Tung một con xúc xắc 100 lần. Mô phỏng phép thử và đếm số lần xuất hiện mặt 6 chấm.
III.11. Chọn ngẫu nhiên năm cây bài từ bộ bài tú lơ khơ. Mô phỏng phép thử và kiểm tra xem
có bộ đôi nào trong mẫu không? Hãy lặp lại cho đến khi có được một đôi trong 5 cây bài.