7. Trích xuất dữliệu từmột dataframe có sẵn

Trong một số trường hợp chúng ta có thể không sử dụng hết các biến số hoặc tất cả các quan sát trong 1 file dữ liệu, chúng ta có thể trích dữ liệu từ1 dataframe có sẵn bằng những câu lệnh đơn giản, trong nội dung này chúng ta sử dụng bộ số liệu CPS1988.csv đểlàm ví dụ minh họa. Trước hết chúng ta sơ bộ file dữ liệu có tên CPS1988.csv bằng câu lệnh sau:

CPS1988<-read.csv(“crab.csv”, header =TRUE): đọc file có tên CPS1988.csv trong thư mục F:/PhanmemR và đặt tên CPS1988.

CPS1988: câu lệnh cho biết chi tiết các biến của đối tượng CPS1988.

library(readxl)
CPS1988 <- read_excel("D:/CPS1988.xlsx")
View(CPS1988)

Trong một sốtrường hợp chúng ta chỉ quan tâm đến một số biến chứ không phải toàn bộ các biến. Để trích xuất dữ liệu theo cột ta thực hiện lệnh sau:

CPS1988<-read.csv(“crab.csv”, header =TRUE): đọc file có tên CPS1988.csv trong thư mục D:/PhanmemR và đặt tên CPS1988.

CPS3 <-CPS1988[c(2:4)]:lấy cột từ2 đến cột 4 của đối tượng CPS1988 và đặt tên CPS3head(CPS3):xem 6 quan sát đầu tiên của đối tượng CPS3.

7.3. Trích xuất dữliệu theo hàng và cột

Để trích xuất dữ liệu theo hàng và cột ta thực hiện câu lệnh:

CPS1988<-read.csv(“crab.csv”, header =TRUE): câu lệnh đọc file có tên CPS1988.csv trong thư mục D:/PhanmemR và đặt tên CPS1988.

CPS4 <-CPS1988[c(1, 3, 5, 7), c(2:4)]:câu lệnh trích xuất dữliệu từ cột 2 đến cột 4, dòng 2 đến dòng 4 của đối tượng CPS1988 và đặt tên CPS4.

head(CPS4):câu lệnh xem 6 quan sát đầu tiên của CPS4.

# Trích xuất từ cột 2 đến cột 4 và đặt tên CPS3
CPS3 <- CPS1988[c(2:4)]
head(CPS3)
## # A tibble: 6 × 3
##   spine width satell
##   <dbl> <dbl>  <dbl>
## 1     3  28.3      8
## 2     3  22.5      0
## 3     1  26        9
## 4     3  24.8      0
## 5     3  26        4
## 6     3  23.8      0

Kết quả câu lệnh trên tạo ra một dataframe gồm các dòng 1, 3, 5, 7 và chỉ lấy các biến ở cột 2, 3, 4 từ dataframe gốc ban đầu.

7.4. Trích xuất dữ liệu từ một dataframe có sẵn bằng lệnh subse

Trong nhiều tình huống, chúng ta cần trích xuất dữliệu cho các quan sát theo một tiêu chí nào đó. Chẳng hạn, từ tập dữ liệu CPS1988.csv chúng ta muốn trích xuất tất cảcác quan sát ứng với parttime=yesmà thôi với tên gọi CPS5 chẳng hạn, ta thực hiện câu lệnh sau:

CPS1988<-read.csv(“crab.csv”, header =TRUE): đọc file có tên CPS1988.csv trong thư mục D:/PhanmemR và đặt tên CPS1988.

CPS5 <-subset(CPS1988, parttime == “yes”):trích xuất các quan sát của biến parttime = yes trong đối tượng CPS1988 và đặt tên CPS5.

CPS5 <- subset (CPS1988, y == 1 )
dim(CPS5)
## [1] 111   6
head(CPS5)
## # A tibble: 6 × 6
##   color spine width satell weight     y
##   <dbl> <dbl> <dbl>  <dbl>  <dbl> <dbl>
## 1     3     3  28.3      8   3050     1
## 2     2     1  26        9   2300     1
## 3     4     3  26        4   2600     1
## 4     3     3  28.2     11   3050     1
## 5     3     1  26       14   2300     1
## 6     2     1  27.1      8   2950     1

Kết quảcâu lệnh cho thấy, có 111 quan sát có ly là 1 được trích xuất.

Tương tự, chúng ta cũng có thểtrích xuất dữ liệu theo một số tiêu chí nào đó.

Ví dụ, cũng từdữliệu CPS1988 ta trích xuất dữliệu cho các quan sát các tiêu chí mà: (1) ứng với y=1, và (2) có color = 3 với đặt tên CPS6, ta thực hiện câu lệnh sau:

CPS6 <-subset(CPS1988, y=1 & color = 3:trích xuất các quan sát của biến y=1 và các quan sát của biến color = 3 trong đối tượng CPS1988 với tên CPS6.

head(CPS6):câu lệnh xem 6 quan sát đầu tiên của CPS6.

8. Mã hóa dữ liệu

Trong mục này chúng ta sửdụng dữliệu của file afterlife.xlsx trong thư mục D:/PhanmemR đểlàm ví dụ minh họa.

Trước tiên chúng ta mô tảsơ bộvềfile dữliệu afterlife.xlsx bằng câu lệnh sau:

af<-read.xlsx(“afterlife.xlsx”, sheetIndex =1, header =TRUE):đọc file afterlife.xlsx và đặt tên af.

af: câu lệnh cho biết chi tiết đối tượng af.

library(readxl)
afterlife <- read_excel("D:/afterlife.xlsx")
View(afterlife)

Dữ liệu file afterlife.xlsx có hai biến định tính.

Biến thứ nhất: Sex (giới tính) được mã hóa như sau: 1 là nam và 2 là nữ.

Biến thứ 2: Believe (niềm tin) của người được khảo sát “Sau khi chết có tồn tại một thếgiới khác” được mã hóa như sau:

1: Tin là có, khẳng định chắc chắn.

2: Tin là có, nhưng, nhưng không chắc chắn.

3: Tin là không có, nhưng không chắc chắn.

4: Tin là không có, khẳng định chắc chắn.

  1. Dữliệu bị khuyết.

  2. Không thể chọn.

  3. Không trảlời.

Trong dữ liệu này chúng ta chỉ giữ lại những quan sát mà biến Believe < 5, sau đó thay những quan sát có giá trị1 và 2 của biến Believe thành giá trị1 (những quan sát Tin là có), đồng thời những quan sát có giá trị3 và 4 của biến Believe thành giá trị 0 (những quan sát Tin là không có).

Để thực hiện công việc trên ta thực hiện các lệnh sau:

af<-read.xlsx(“afterlife.xlsx”, sheetIndex =1, header =TRUE):đọc file tên afterlife.xlsx và đặt tên af.

afmahoa<-subset(af, Believe <5):câu lệnh trích xuất những quan sát mà giá trịcủa biến Believe <5 và đặt tên afmahoa.

afmahoa\(Believe[afmahoa\)Believe <=2] <-1: câu lệnh thay những giá trịquan sát ≤2 trong cột Believe của afmahoa bằng 1.

afmahoa\(Believe[afmahoa\)Believe >2] <-0:câu lệnh thay những giá trịquan sát >2 trong cột Believe của afmahoa bằng 0.

afterlife <- read_excel("D:/afterlife.xlsx")

Phụlục 2. Thực hành bảng ngẫu nhiên và suy diễn thống kê trên R

1. Bảng ngẫu nhiên

Cấu trúc xác suất cho các bảng ngẫu nhiên Dữliệu định tính là tần số suất hiện các biểu hiện của các biến. Cho X và Y là hai biến định tính, X có kbiểu hiện: 𝐴\(,𝐴%,...,𝐴!và Y có mbiểu hiện: 𝐵\),𝐵%,…,𝐵&. Chúng ta có thểsử dụng một bảng gồm khàng và cột đểthểhiện kết quả có thể xảy ra từviệc khảo sát:

Bảng này được gọi là bảng ngẫu nhiên hai chiều 𝑘×𝑚, trong đó 𝑛aOlà sốlần quan sát được cặp thuộc tính w𝐴a,𝐵Ox, còn gọi là tần sốcủa w𝐴a,𝐵Ox. Một bảng ngẫu nhiên hai biến được gọi là bảng hai chiều; một bảng ngẫu nhiên 3 biến gọi là bảng ngẫu nhiên 3 chiều.Trong mục này, chúng ta sửdụng bộ dữliệu afmahoa (bộdữliệu đã xử lý được mã hóa từfile dữliệu afterlife.xlsx) đểlàm ví dụ.

1.1 Bảng tần số và tần suất

Lập bảng tần sốvà tần suất cho biến Sex

Đểlập bảng tần sốvà tần suất cho biến Sex, ta thực hiện câu lệnh sau:

af<-read.xlsx(“afterlife.xlsx”, sheetIndex =1, header =TRUE):đọc file afterlife.xlsx và đặt tên af.

afmahoa<-subset(af, Believe <5):câu lệnh trích xuất những quan sát mà giá trịcủa biến Believe <5 và đặt tên afmahoa.

table(afmahoa$Sex):câu lệnh lập bảng tần số cho biến Sex.

table(afmahoa\(Sex/(sum(afmahoa\)Sex)): câu lệnh lập bảng tần suất cho biến Sex.

1.2 Bảng hai chiều

Đểtạo bảng hai chiều chúng ta sửdụng câu lệnh sau:table(afmahoa\(Sex, afmahoa\)Believe):câu lệnh tạo bảng hai chiều cho 2 biến Sex và Believe.

2 Tính OddsRatio

Đểtính OddsRatio của hàng 1 và hàng 2 trong bảng hai chiều, ta thực hiện câu lệnh sau:

B1. install.packages(“DescTools”):cài đặt gói DescTools.

B2. library(DecsTools):gọi gói DescTools.

B3. OddsRatio(data, conf.level =NULL, y =NULL, method = “wald”): câu lệnh tính giá trịOddsRatio; trong đó: data là bảng hai chiều; conf.level: độtin cậy mặc nhiên 95%; y là véc tơ các giá trịcần tính giá trịOddsRatio; method =“wald”: phương pháp wald.

B1. library(DecsTools):gọi packages DescTools.

B2. v<-c(189, 104, 10845, 10933): câu lệnh tạo véc tơ v.

B3.data<-matrix(v, 2):câu lệnh tạo ma trận cấp 2 (bảng 2 chiều) và đặt tên data.data: câu lệnh xem data.

B4. y<-c(189, 104):câu lệnh tạo véc tơ y.

B5. OddsRatio(data, conf.level =NULL, y =NULL, method = “wald”): câu lệnh tính OddsRatio.

Kết quảtỷlệchênh (OddsRatio) là 1,832054. Giá trịnày cho chúng ta biết tỷlệngười bịbệnh nhồi máu cơ tim đối với nhóm người dùng Placebo(giảdược) cao hơn 83,2% so với nhóm người sửdụng thuốc Aspirin.

3. Một số bài toán ước lượng

3.1. Ước lượng tỷl ệ một tổng thể

Đểlàm bài toán ước lượng tỷ lệ bằng R, ta thực hiện câu lệnh sau:

B1. install.packages(“DescTools”): cài đặt gói DescTools.

B2. library(DecsTools): gọi gói DescTools.

B3. BinomCI(k, n, conf.level =NULL, method = “wald”):câu lệnh ước lượng tỷlệmột tổng thể; trong đó, k: số phần tử có tính chấtA, n: số phần tử mẫu, conf.level =NULL: độtin cậy mặc định là 95%, method =wald: phương pháp wald.

Chúng ta lấy dữliệu từfile có tên afterlife.xlsx dểminh họa cho các câu lệnh trên.

Đểước lượng tỷlệnhững người tin rằng “Tồn tại một thếgiới khác sau khi chết” ta làm như sau: