Trong bài viết này, SciEco cung cấp nội dung về tạo biến và hiệu chỉnh biến trên STATA.
1. Các toán tử trong Stata
Các toán tử trong STATA được trình bày trong bảng dưới đây:
+ | Cộng | ! | Không | > | Lớn hơn |
- | Trừ | | | Hoặc | < | Nhỏ hơn |
* | Nhân | & | Và | >= | Lớn hơn hoặc bằng |
/ | Chia | = | Phép gán | <= | Nhỏ hơn hoặc bằng |
^ | Mũ | == | Bằng | ||
+ | Nối chuỗi | != | Không bằng |
Ví dụ: biểu thức được viết thành –(x+y^(x-y))/(x*y)
2. Các kiểu dữ liệu
Dữ liệu dạng số (numeric)
Giá trị nhỏ nhất | GIá trị nhỏ nhất | Giá trị lớn nhất |
byte | -127 | 100 |
int | -32,767 | 32,740 |
long | −2,147,483,647 | 2,147,483,647 |
float | −1.70141173319 × 10^38 | 1.70141173319 × 10^38 |
double | −8.9884656743 × 10^307 | 8.9884656743 × 10^307 |
Dữ liệu dạng chuỗi (string)
Loại lưu trữ | Độ dài lớn nhất |
str1 | 1 |
str2 | 2 |
... | . |
... | . |
str2045 | 2045 |
strL | 2,000,000,000 |
3. Tạo biến mới với câu lệnh gen
Câu lệnh gen được thực hiện khi cần tạo biến mới dựa trên tính toán biểu thức.
Cấu trúc câu lệnh
generate [type] newvar[:lblname] =exp [if] [in] [, before(varname) | after(varname)]
Tạo biến số newv1
bằng tổng biến v1
cộng thêm 2
1generate newv1= v1 + 2
Trường hợp tương tự, biến newv1
đứng trước/đứng sau biến v1
1generate newv1=v1 + 2, before(v1)
2generate newv1=v1 + 2, after(v1)
Trường hợp tương tự, biến newv1
dạng byte
với nhãn giá trị (label values) mylabel
(Nhãn của biến và nhãn giá trị được trình bày ở nội dung dưới)
1generate byte newv1:mylabel=v1 + 2
Tạo biến chuỗi newv2
bằng “SciEco”
1generate newv2= "SciEco"
Tạo biến newv3
bằng thứ tự của quan sát
1generate newv3=_n
Tạo biến newv4
bằng tổng số quan sát
1generate newv4=_N
4. Tạo biến mới với câu lệnh egen
Câu lệnh egen
được thực hiện khi cần tạo biến mới dựa trên hàm:
egen [type] newvar = fcn(arguments) [if] [in] [, options]
Tạo biến với rowtotal( )
1egen hsum = rowtotal(a b c)
2generate vsum = sum(hsum)
3egen sum = total(hsum)
Kết quả
a | b | c | hsum | vsum | sum | |
1. | . | 2 | 3 | 5 | 5 | 63 |
2. | 4 | . | 6 | 10 | 15 | 63 |
3. | 7 | 8 | . | 15 | 30 | 63 |
4. | 10 | 11 | 12 | 33 | 63 | 63 |
Tạo biến với rowmean()
, rowmedian()
, rowpctile()
, rowsd()
, và rownonmiss()
Hàm rowmean()
tính giá trị trung bình theo quan sát của các biến khác nhau (tương đương với hàm average trong excel); tương tự, các hàm còn lại lần lượt tính toán giá trị trung vị, phân vị, độ lệch chuẩn và số biến không bị missing theo hàng.
1egen avg = rowmean(a b c)
2egen median = rowmedian(a b c)
3egen pct25 = rowpctile(a b c), p(25)
4egen std = rowsd(a b c)
5egen n = rownonmiss(a b c)
Kết quả:
a | b | c | avg | median | pct25 | std | n | |
1. | . | 2 | 3 | 2.5 | 2.5 | 2 | .7071068 | 2 |
2. | 4 | . | 6 | 5 | 5 | 4 | 1.414214 | 2 |
3. | 7 | 8 | . | 7.5 | 7.5 | 7 | .7071068 | 2 |
4. | 10 | 11 | 12 | 11 | 11 | 10 | 1 | 3 |
Nội dung chi tiết các hàm trong STATA sẽ được trình bày tại các bài viết tiếp theo trong chủ đề “Các lệnh xử lý dữ liệu trong STATA”
Thay đổi biến đã có với lệnh replace
Thay đổi giá trị của 1 biến đã thực hiện lệnh replace
. Ví dụ, tạo biến giả nhận dạng trẻ em (kid
) dựa vào biến tuổi (age
).
1gen kid=1 if age<16
2 replace kid=0 if kid==.
hoặc
1gen kid=.
2 replace kid=1 if age<16
3 replace kid=0 if age>=16