Chuyển đến nội dung chính

Visitors (statistics)

Recode – mã hoá lại biến trong Stata



Lệnh recode giúp ta mã hoá lại các giá trị của biến theo những điều kiện được đưa ra. Giá trị nào không phù hợp với biểu thức điều kiện sẽ không bị thay đổi, ngoại trừ phù hợp với những điều kiện kèm theo.
Câu lệnh như sau:
recode danh sách biến (biểu thức điều kiện) [biểu thức điều kiện] [if] [in] [, tuỳ chọn]

Các biểu thức điều kiện phổ biển là:
# = #                           1 = 2                              1 mã hoá thành 2                   
# # = #                        1 2 = 2                           1 và 2 mã hoá thành 2
#/# = #                        1/3 = 2                           1 đến 3 mã hoá thành 2
Nonmissing = #          nonmiss = 1                   các giá trị không phải missing mã hoá thành 1
Missing = #                 miss = 2                         tất cả missing mã hoá thành 2
Else = #                       else=2                            những giá trị còn lại mã hoá thành 2
Lưu ý: với 3 nguyên tắc cuối, phải được sử dụng như là 1 rule cuối cùng trong 1 dãy rule. Else bao hàm cả nonmiss và missing.
Options bao gồm:
Generate (newvar)
Into (newvar)
tạo biến newvar chứa các giá trị của biến được mã hoá. Các giá trị nằm ngoài khoảng điều kiện của lệnh If hoặc in sẽ được mã hoá thành missing, ngoài trừ trường hợp sử dụng tuỳ chọn copy.
Nếu không thực thi lệnh gen hoặc into, câu lệnh sẽ ghi đè lên biến đó.
prefix(str)
tạo biến mới với tiền tố Str.
label(name)
tạo label value cho biến được mã hoá. Tuỳ chọn này chỉ được thực hiện cùng vớ tuỳ chọn gen (into) và pre. Khi sử dụng lệnh này, tên label var của biến được mã hoá sẽ được sử dụng làm tên nhãn biến cho biến mới được tạo ra.
copyrest
Sao chép những giá trị không nằm trong khoảng điều kiện từ biến cũ sang biến mới. Thường được sử dụng cùng với lệnh if hoặc in.
test
kiểm tra các quy tắc được sử dụng nhưng không thực thi câu lệnh
Ví dụ:
Sử dụng bộ số liệu sau:
. webuse recxmpl

. list

     +------------------+
     | x   x1   x2   x3 |
     |------------------|
  1. | 1    2    1    8 |
  2. | 2    1    2    1 |
  3. | 3    2    1    2 |
  4. | 4    3    2    1 |
  5. | 5    4    3    2 |
     |------------------|
  6. | 6    5    4    3 |
  7. | 7    6    5    4 |
  8. | 8    7    6    5 |
  9. | 1    8    7    6 |
 10. | 2    1    8    7 |
     +------------------+
Với biến x, mã hoá lại 1 thành 2, không thay đổi các biến khác và lưu lại với tên biến mới là nx
. recode x 1=2, gen(nx)

. recode x 1=2, gen(nx)
(2 differences between x and nx)

Kiểm tra kết quả

. list x nx
. list x nx

     +--------+
     | x   nx |
     |--------|
  1. | 1    2 |
  2. | 2    2 |
  3. | 3    3 |
  4. | 4    4 |
  5. | 5    5 |
     |--------|
  6. | 6    6 |
  7. | 7    7 |
  8. | 8    8 |
  9. | 1    2 |
 10. | 2    2 |
     +--------+
Mã hoá biến x1 như sau: 1 thành 2, 2 thành 1và tạo 1 biến mới với tên nx1
. recode x1 (1=2) (2=1), gen(nx1)

. recode x1 (1 = 2) (2 = 1), gen(nx1)
(4 differences between x1 and nx1)

. list x1 nx1

. list x1 nx1

     +----------+
     | x1   nx1 |
     |----------|
  1. |  2     1 |
  2. |  1     2 |
  3. |  2     1 |
  4. |  3     3 |
  5. |  4     4 |
     |----------|
  6. |  5     5 |
  7. |  6     6 |
  8. |  7     7 |
  9. |  8     8 |
 10. |  1     2 |
     +----------+
Với biến x2, mã hoá 1 và 2 thành 1, 3 thành 2, 4 đến 7 thành 3, lưu kết quả vào biến mới nx2
. recode x2 (1 2 = 1) (3 = 2) (4/7 = 3), gen(nx2)

. recode x2 (1 2 = 1) (3 = 2) (4/7 = 3), gen(nx2)
(7 differences between x2 and nx2)

. list x2 nx2

     +----------+
     | x2   nx2 |
     |----------|
  1. |  1     1 |
  2. |  2     1 |
  3. |  1     1 |
  4. |  2     1 |
  5. |  3     2 |
     |----------|
  6. |  4     3 |
  7. |  5     3 |
  8. |  6     3 |
  9. |  7     3 |
 10. |  8     8 |
     +----------+
Ta mã hoá các giá trị của biến x1, x2, x3 như sau: 1 đến 3 thành 1, 4 đến 6 thành 2, còn lại mã hoá thành 3.
. recode x1-x3 (1/3=1) (4/6=2) (else=3), pre(new) test
Hoặc
. recode x1-x3 (min/3=1) (4/6=2) (7/max=3), pre(new) test

. recode x1-x3 (1/3=1) (4/6=2) (else=3), pre(new) test
(8 differences between x1 and newx1)
(8 differences between x2 and newx2)
(8 differences between x3 and newx3)

. recode x1-x3 (min/3=1) (4/6=2) (7/max=3), pre(new) test
(8 differences between x1 and newx1)
(8 differences between x2 and newx2)
(8 differences between x3 and newx3)

Ta sẽ mã hoá biến giá trị 5 6 của biến x2 thành missing. Câu lệnh như sau:
. recode x2 1/4 =. , gen(mx)
Hoặc
. gen mx = x2
. replace mx =. if inrange(x2, 1,4)

Bây giờ, chúng ta sẽ mã hoá lại các giá trị lớn hơn 4 của biến x thành missing với những trường hợp newx = 2, lưu kết quả với tên biến gn
. recode x (5/max=.) if newx1>1, gen(gn)

. list x newx1 gn

     +----------------+
     | x   newx1   gn |
     |----------------|
  1. | 1       1    . |
  2. | 2       1    . |
  3. | 3       1    . |
  4. | 4       1    . |
  5. | 5       2    . |
     |----------------|
  6. | 6       2    . |
  7. | 7       2    . |
  8. | 8       3    . |
  9. | 1       3    1 |
 10. | 2       1    . |
     +----------------+
Bạn sẽ thấy bất ngờ vì biến gn chỉ có 1 giá trị. Hãy xem lại điều kiện của lệnh IF kèm theo, trước hết, điều kiện của chúng ta đưa ra là chỉ mã hoá với các trường hợp có newx1 > 1. Những trường hợp nào không thoả mãn điều kiện trên sẽ được mã hoá mặc định thành missing. Đối với những trường hợp thoả mãn điều kiện trên, những trường hợp nào có x nằm trong khoảng 5 đến 8 (max) sẽ được mã hoá thành missing, những trường hợp nào không nằm trong khoảng trên sẽ được giữ nguyên giá trị tại biến gn.
Để dễ dàng hơn trong việc hiểu điều này, ta sử lại câu lệnh trên như sau:

. recode x (5/max=.a) if newx1>1, gen(gn1)

Chú ý: các chữ cái nằm sau ký hiệu “.” điều được hiểu là missing.

. list x newx1 gn gn1

     +----------------------+
     | x   newx1   gn   gn1 |
     |----------------------|
  1. | 1       1    .     . |
  2. | 2       1    .     . |
  3. | 3       1    .     . |
  4. | 4       1    .     . |
  5. | 5       2    .    .a |
     |----------------------|
  6. | 6       2    .    .a |
  7. | 7       2    .    .a |
  8. | 8       3    .    .a |
  9. | 1       3    1     1 |
 10. | 2       1    .     . |
     +----------------------+
Nhưng ta chỉ muốn thay đổi các giá trị của biến x thoả mãn điều kiện đã đưa ra như trên mà không muốn có thêm missing, giải quyết vấn đề này, ta thêm lệnh copy vào cuối câu lệnh recode. Lệnh copy sẽ copy các biến không thoả mãn điều kiện của lệnh IF vào biến mới, và kết quả như sau:
. recode x (5/max=.a) if newx1>1, gen(gn2) copy

. list x newx1 gn gn1 gn2

     +----------------------------+
     | x   newx1   gn   gn1   gn2 |
     |----------------------------|
  1. | 1       1    .     .     1 |
  2. | 2       1    .     .     2 |
  3. | 3       1    .     .     3 |
  4. | 4       1    .     .     4 |
  5. | 5       2    .    .a    .a |
     |----------------------------|
  6. | 6       2    .    .a    .a |
  7. | 7       2    .    .a    .a |
  8. | 8       3    .    .a    .a |
  9. | 1       3    1     1     1 |
 10. | 2       1    .     .     2 |
     +----------------------------+

Sử dụng bộ số liệu sau
. webuse fullauto, clear
Với biến rep77 và rep78, mã hoá 1 và 2 thành 1, 3 thành 2, 4 và 5 thành 3, lưu biến mới với tên newrep77 và newrep78, đồng thời gán nhãn giá trị cho biến như sau: 1 dưới mức trung bình, 2 trung binh và 3 trên mức trung bình.
. recode rep77 rep78 (1 2 = 1 "duoi trung binh") (3 = 2 "trung binh") (4 5 = 3 "tren trung binh"), gen(nrep77 nrep78) label (nrep)
. label list nrep


Tài Liệu Tham Khảo
1. http://www.stata.com/help.cgi?recode
2. STATA DATA-MANAGEMENT REFERENCE MANUAL RELEASE 12

Nhận xét

Bài đăng phổ biến từ blog này

Phần mềm dinh dưỡng tính khẩu phần ăn - Hướng dẫn phần mềm Vietnam Eiyokun

bạn muốn biết bạn đã ăn bao nhiêu kcal protit, lipip, gluxit, bao nhiêu g vitamin và vô số chất dinh dưỡng khác trong bữa ăn hằng ngày? làm thế nào để tính được 1 người nặng 100 kg cao 1m80 mỗi ngày cần bao nhiêu protit, lipip, gluxit? 1 công việc quá đơn giản đối với 1 nhà dinh dưỡng chuyên nghiệp. vấn đề là chúng ta thường là các nhà dinh dưỡng không chuyên. nhưng với phần mềm Vietnam Eiyokun tất cả chúng ta đều trở thành những nhà bán chuyên nghiệp. các bạn download hướng dẫn tại đây Bản cài đặt tại đây . pass mở file là itcchue code là A020400312

Các phép tính đơn giản ứng dụng trong SPSS - Lệnh Compute

Xin nhắc lại đây là những bài viết ở mức độ hướng dẫn cơ bản và mang tính chất cá nhân nên không thể tránh sai sót. Chỉ là mang tính chất xây dựng nguồn tài liệu của YTCC Huế Chủ đề hôm nay là thực hiện các phép tính cơ bản: Đơn giản muốn tính BMI trong SPSS. Bạn làm thế nào, trong khi đã có dữ kiện là Cân nặng, chiều cao (cm). BMI = (Cân nặng/(Chiều cao* chiều cao)*10000) Mô tả bằng hình ảnh trong SPSS. H1:  H2 Bạn trở lại cửa sổ Variable View sẽ thấy 1 biến mới "BMI" xuất hiện. Nó là kết quả của việc thực hiện thuât toán trên. Xin lỗi là công thức trên thiếu 1 dấu ")" cuối cùng trong hình 2. Thks đã đọc TBT Ytcchue.blogspot.com