Bài 2: Tạo biến và thao tác biến (Tiếp)

Gán tên biến, nhãn biến

  • label variable: Gán mô tả cho tên biến

  • label define: Định nghĩa nhãn cho các giá trị cụ thể của biến

  • label values: Gán nhãn đã định nghĩa cho giá trị của biến

    label variable bien_a "Biến a”
    label define ten_nhan giá_trị_1 "nhãn1" ...
    label values bien_a ten_nhan
    
  • Ví dụ:

    label variable nhomtuoi "Nhóm tuổi"
    label define nhan_nhomtuoi 1 "Dưới 30 tuổi" 2 "Từ 31 đến 49 tuổi" 3 "Từ 50 tuổi trở lên"
    label values nhomtuoi nhan_nhomtuoi

    Gán nhãn

Bài tập

Mô tả biến

  • Mô tả cho tên biến ctkhChưa từng kết hôn
  • Định nghĩa nhãn cho các giá trị cụ thể trong tên biến ctkh: 1 là Có, 2 là Không
  • Gán nhãn đã định nghĩa cho tên biến ctkh

Bài 3. Làm sạch dữ liệu và các lệnh cơ bản

I. Mục tiêu buổi học

  • Một số lệnh cơ bản
  • Làm sạch dữ liệu
  • Ghép - nối dữ liệu
  • Lọc dữ liệu theo điều kiện

II. Một số câu lệnh cơ bản

  • cd: Thay đổi đường dẫn mặc định đến đường dẫn folder lưu file dữ liệu

    cd đường_dẫn_thư_mục
  • list: Liệt kê các biến theo nhu cầu

    list bien_a bien_b bien_n
    list bien_a if điều kiện

II. Làm sạch dữ liệu

1) Kiểm tra trùng lặp mã định danh

Khái niệm

  • Mã định danh phải là duy nhất và không trùng lặp trong bộ dữ liệu

  • Có 3 loại trùng lặp:

    • Trùng lặp có cùng thông tin cho mỗi bản ghi
    • Trùng lặp có cùng thông tin cho mỗi bản ghi, tuy nhiên thông tin này có thể không đầy đủ
    • Trùng lặp có thông tin khác nhau (các đối tượng khác nhau có cùng số bệnh nhân)

Các bước

duplicates report tenbien_id // Bảng tổng hợp số lượng duplicate trong bộ dữ liệu 
sort tenbien_id // Sắp xếp mã id theo thứ tự
by tenbien_id: gen nb_dupli = _N // Tạo biến mới để kiểm tra trùng lặp
list tenbien_id bien_a bien_b bien_n if nb_dupli ==2 //Liệt kê danh sách các bản ghi có mã định danh trùng lặp
  • Xác định lý do khiến mã định danh trùng lặp và đưa quyết định:
    • Xóa một trong các bản ghi
    • Cần hoàn thiện thông tin của các bản ghi trước khi xóa
    • Giữ lại tất cả các bản ghi và điều chỉnh lại mã số bệnh nhân với sự hỗ trợ.

Xoá hàng

Xoá thủ công từng hàng với drop

drop in số_hàng

Lưu ý: Xoá từ dòng cuối về đầu, để tránh thay đổi vị trí dòng sau khi xóa.

Xoá hàng trùng lặp theo 1 vài biến cụ thể

duplicates drop bien_a bien_b bien_n, force

Lưu ý: Sẽ mặc định xoá dòng trùng theo 1 vài biến cụ thể và giữ lại dòng đầu tiên. Hiệu quả khi dùng để xoá các bản ghi trùng hoàn toàn thông tin

Xoá hàng trùng lặp theo số hàng chỉ định

gen stt = _n // Tạo cột số thứ tự mới từ 1 đến hết (Tương đương với số hàng)
drop if inlist(stt, số_hàng1, số_hàng2, số_hàngn) // Xoá dữ liệu theo biến stt và chỉ định các số mong muốn

Xoá hàng trùng lặp theo bien_id cụ thể và missing thông tin một vài biến

drop if inlist(bien_id, ma_id1, ma_id2, ma_idn) & missing(bien_a) & missing(bien_b)

Bài tập

Dofile

  • Có bao nhiêu bản ghi/bản ghi có mã định danh trùng lặp? Liệt kê các các bản ghi có mã định danh trùng lặp

2) Chuyển biến chuỗi thành số

Cú pháp

  • Câu lệnh

    • destring: Chuyển biến chuỗi thành số
  • Cú pháp

    destring bien_a bien_b bien_n, replace
  • Ví dụ: Chuyển đổi biến tien_su_lao thành số

    destring tien_su_lao, replace

Bài tập

  • Khám phá bộ Dữ liệu phòng khám Clinic và cho biết biến tuổi tuoi đang hiển thị trong stata là loại biến nào? Cách xử lý dữ liệu

3) Biến ngày/ tháng/ năm

Định dạng chuẩn biến

  • Cú pháp

    gen bienngay_moi = date(bienngay_a, "DMY")
    format bienngay_moi %dD/N/CY
  • Ví dụ: Định dạng biến Ngày bệnh lao được chẩn đoán mới ngay_cd_lao về đúng định dạng ngày, tháng, năm

    gen ngay_cd_lao_moi = date(ngay_cd_lao, "DMY")
    format ngay_cd_lao_moi %dD/N/CY

    Lưu ý: %dD/N/CY: dD là ngày, N là tháng, CY là năm. Có thể đổi vị trị tuỳ ý

Tách riêng ngày/tháng/năm

  • Cú pháp

    gen day = day(bienngay_a)
    gen month = month(bienngay_a)
    gen year = year(bienngay_a)
  • Ví dụ: Tách biến Ngày bệnh lao được chẩn đoán mới ngay_cd_lao_moi thành 3 biến ngày, tháng, năm riêng biệt

    gen day = day(ngay_cd_lao_moi)
    gen month = month(ngay_cd_lao_moi)
    gen year = year(ngay_cd_lao_moi)

4) Giá trị ngoại lai

Khái niệm

  • Định nghĩa: Là những giá trị đơn lẻ có đặc điểm khác hẳn so với các giá trị còn lại trong dữ liệu. Những giá trị này khác xa so với phân bố chung của biến số

graphbox

Các bước xác định và làm sạch

Bước Lệnh Stata Mô tả
1 egen q25 = pctile(bien_a), p(25) Tính Q1 (phân vị thứ nhất) của biến bien_a
2 egen q75 = pctile(bien_a), p(75) Tính Q3 (phân vị thứ ba) của biến bien_a
3 gen iqr = q75 - q25 Tính IQR = Q3 – Q1
4 gen lower_bound = q25 - 1.5*iqr Tính giới hạn dưới
5 gen upper_bound = q75 + 1.5*iqr Tính giới hạn trên
  1. Liệt kê các id có giá trị ngoại lai: list bien_id bien_a if bien_a < lower_bound | bien_a > upper_bound

  2. Tạo biến mới không có giá trị ngoại lai: gen bien_a_clean = bien_a if bien_a >= lower_bound & bien_a <= upper_bound

Bài tập

  • Khám phá bộ Dữ liệu phòng khám Clinic và xác định giá trị ngoại lai ở biến tuổi tuoi của bộ dữ liệu

5) Các giá trị missing

Cú pháp

Giá trị thiếu có thể có ảnh hưởng quan trọng đến phân tích. Vì vậy, việc xác định và xử lý chúng là hoàn toàn cần thiết

  • Phân biệt hai tình huống:
    • Biến có giá trị thiếu đối với phần lớn các bản ghi
    • Bản ghi có giá trị thiếu đối với phần lớn các biến

Dofile

  • Câu lệnh
    • misstable sum: Liệt kê các biến có missing

Dofile

Bài tập

  • Khám phá bộ Dữ liệu phòng khám Clinic và xác định các biến có missing. Liệt kê tên biến

6) Logic

  • Xác định các vấn đề logic của bộ dữ liệu
  • Sử dụng các câu lệnh:
    • list bien_a bien_b bien_c if điều kiện: Liệt kê biến theo điều kiện
    • replace bien_a = giá_trị_1 if điều_kiện_1: Thay thế giá trị trong biến a theo điều kiện

III. Ghép - nối dữ liệu

Theo hàng

  • Câu lệnh:

    • append: Nối các bộ dữ liệu có cùng cấu trúc
  • Cú pháp:

    cd đường_dẫn_thư_mục
    append using tenfile_1 tenfile_2
  • Thao tác thanh công cụ:

    • File > Data > Combine datasets > Append datasets
    • Chọn Browse ở File name of dataset on disk để chọn file ghép hàng
    • Bấm OK
  • Lưu ý:

    • Nếu dùng thao tác thanh công cụ cần mở 1 bộ dữ liệu rồi mới append bộ dữ liệu thứ 2
    • Nếu câu lệnh cần khai báo đường link thư mục lưu trữ cd và bắt buộc 2 file dữ liệu không cần cùng folder
    • Lưu dưới dạng .dta
    • Có cùng cấu trúc biến


Bài tập: Ghép dữ liệu về huyết áp của bệnh nhân của 2 cơ sở file bplong_coso1.dtabplong_coso2.dta thành 1 file dữ liệu tổng

Theo cột

graphbox

  • Câu lệnh:

    • merge: Ghép thêm các biến từ một bộ dữ liệu khác có cùng biến key
  • Cú pháp:

    merge 1:1 tenbien_key using tenfile_ghep, gen(check) 
    
  • Thao tác thanh công cụ: File > Data > Combine datasets > Merge two datasets Chọn biến key cở mục Key Variables Chọn Browse ở File name of dataset on disk để chọn file ghép cột Bấm OK

  • Lưu ý:

    • tenbien_key: là biến cả 2 bộ dữ liệu đều có và các giá trị trong biến là duy nhất
    • Các file Lưu dưới dạng .dta
    • Chỉ thực hiện merge khi:
      • Đã import 1 bộ dữ liệu trước đó
      • 2 bộ dữ liệu đã được làm sạch


Bài tập: Ghép thêm dữ liệu về huyết áp của bệnh nhân sau khi đã điều trị từ bộ dữ liệu bpwide_after.dta vào bộ dữ liệu trước khi điều trị bpwide_before.dta