Home | KTL cơ bản | Tạo biến trên Stata

Tạo biến trên Stata

Chúng ta đã tìm hiểu Stata cũng như là cú pháp lệnh cơ bản của Stata ở phần giới thiệu. Bài viết này sẽ trình bày về cách tạo biến mới, thay đổi biến hiện tại và cách tạo nhãn cho biến.

1.

Tạo và thay đổi biến

Câu lệnh cơ bản để tạo biến mới là {generate (hoặc viết tắt là gen) tên biến} và  {replace tên biến} để thay đổi biến.

Cú pháp của các lệnh này như sau:
gen variable=expression và replace variable=expression

trong đó, variable là tên biến bạn muốn tạo hoặc thay đổi; expression là biểu thức toán học cho kết quả là giá trị của biến. expression đơn giản có thể là một số hoặc là một biểu thức phức tạp. Giá trị missing trong quá trình xử lý (tạo biến hoặc thay đổi biến) sẽ tồn tại ở biến mới.

Phần minh họa sử dụng dữ liệu thực hành là auto.dta

use https://vietlod.com/data/auto.dta, clear

Giả sử bạn muốn tạo biến price2014 từ mức giá năm 1978 (price) với hệ số nhân là 3.6 thì sử dụng:
gen price2014 = price*3.6

Sau khi tạo xong, bạn biết mức giá năm 2014 này chính xác hơn chỉ gấp 3.57 thay vì 3.6 thì sử dụng lệnh replace để thay đổi:
replace price2014 = price*3.57

Kết quả sẽ có 74 quan sát bị thay đổi. Đây là tất cả các quan sát có trong tập dữ liệu. Bạn có thể sử dụng điều kiện if để lựa chọn những quan sát bị tác động. Khi đó, chỉ những quan sát thỏa mãn điều kiện của if sẽ bị thay đổi, và những quan sát không thỏa mãn điều kiện sẽ có giá trị missing.

Ví dụ, chúng ta muốn thu nhỏ thang điểm 5 của biến rep78 thành thang 3 theo điều kiện giá trị của rep78 nhỏ hơn 3 thì gán thành 1; bằng 3 thì gán thành 2 và lớn hơn 3 thì gán là 3. Các câu lệnh thực hiện như sau:
gen rep3=1 if rep783 & rep78<.

Diễn giải:

  • Câu lệnh 1: tạo biến rep3 có giá trị là 1 ở những quan sát ứng với các quan sát của biến rep78 có giá trị nhỏ hơn 3 và giá trị missing ở những quan sát ứng với các quan sát của biến rep78 có giá trị từ 3 trở lên.
  • Câu lệnh 2: các quan sát missing của biến rep3 ứng với các quan sát của biến rep78 có giá trị là 3 sẽ được thay thế bằng 2.
  • Câu lệnh 3: các quan sát missing của biến rep3 ứng với các quan sát của biến rep78 có giá trị lớn hơn 3 sẽ được thay thế bằng 3.

Câu hỏi: nếu bỏ qua thành phần biểu thức (rep78 <.) trong điều kiện if ở câu lệnh thứ 3 thì kết quả sẽ như thế nào?

Sự kết hợp 2 lệnh genreplace cho phép chúng ta tạo biến mới bằng cách mã hóa lại biến cũ (rep3 từ rep78). Trong Stata, quá trình này cũng có thể thực hiện bằng một lệnh recode rõ ràng và ngắn gọn hơn. Cú pháp của recode như sau:
recode var (rule 1) (rule 2) (more rules as needed…), gen(newvar)

Tùy chọn gen(newvar) cho phép tạo ra một biến mới với tên mong muốn, chẳng hạn gen(rep3), mà không thay đổi biến cũ (rep78). Trong trường hợp, chúng ta không thêm tùy chọn này thì câu lệnh recode sẽ tiến hành mã hóa biến cũ và lưu lại.

(rule 1) (rule 2)… là các quy tắc thông báo cho Stata cách mà giá trị các biến mã hóa. Quy tắc này có dạng giá trị cũ (inputvalue) = giá trị mới (outputvalue) . Giá trị cũ có thể là một số, một tập hợp số hoặc một dãy số; còn giá trị mới chỉ là một số duy nhất.

Trong ví dụ trên, câu lệnh recode được thực hiện như sau:
recode rep78 (1 2=1) (3=2) (4/5=3), gen(rep3b)

Vì giá trị missing không được đề cập trong các quy tắc trong câu lệnh, do vậy, các quan sát missing của rep78rep3 là giống nhau.